scpにはまるパターン
ちょっとはまったのでscpにはまるパターンを調べてみた
環境
詳細は前の記事参照
Host sakura HostName IPAddress Port 10022 IdentityFile ~/.ssh/sakura_rsa User hoge
はまりどころ
コピー先のパスが適切ではない
やったこと
scp ローカルファイル sakura:/test
結果
scp: /test: Permission denied
解決策
- コピー先をルートからのパスで記載
scp ファイルパス sakura:/home/hoge/test
- もしくは~つける
scp ファイルパス sakura:~/test
リモートホストにscpがインストールされていない
- ほとんどのディストリビューションはscpはクライアントパッケージに含まれる
- サーバーパッケージだけがインストールされている場合はssh接続はできるがscpはできない
- インストールしているけどパス通っていないとかも同様
- さくらのVPS(標準)は特に意識しなくても大丈夫
解決策
- クライアントパッケージをインストールする
# yum install openssh-clients
ssh接続時に何かしらの出力がある
解決策
- 以下のコマンド打って何か表示されるか確認
ssh sakura /bin/true
- 何も表示されなければOK
- 何か表示される場合は.bashrcとか調べてみる
- さくらのVPS(標準)は特に意識しなくても大丈夫
所感
自分が引っかかったのは1つめのやつ。
ssh接続しているユーザーのカレントディレクトリからでいいじゃない。
そしてコピー先のパスが間違ってもPermission denied
と出るのね。。。
エンジニア力が低いとこういう細かいところに時間を食ってしまう・・・精進せねば
まぁでもこういうところで躓きながらやると、すーっと使うよりは覚えるのでいい経験かな(ポジティブ)
参考
自力で解決したけど他のはまるパターンは最近出てた以下の書籍が大変参考になった。
OpenSSH [実践] 入門
一歩進んだ使い方とか載っててsshバリバリな人にもオススメできる。
さくらのVPS借りた時のはじめの設定
無料お試しで2週間使えるとのことだったのでさわさわした時の設定。
sshは公開鍵で認証し、セキュリティは最低限のみ設定。
環境
[VPS]
[クライアント]
- Mac OS X 10.10
- OpenSSH_6.2p2
1. rootのパスワード変更から作業ユーザー作成まで
rootのパスワード変更
[root@host ~]# passwd Changing password for user root. New password: Retype new password: passwd: all authentication tokens updated successfully.
作業用ユーザー作成
[root@host ~]# useradd hoge [root@host ~]# passwd hoge New password: Retype new password: passwd: all authentication tokens updated successfully.
2. ユーザーhogeをグループに追加し、グループがsudoとsuを実行できるようにする
ユーザーhogeをwheelに追加し、wheelグループがsudoコマンドを実行できるようにする
[root@host ~]# usermod -G wheel hoge [root@host ~]# visudo -- # %wheel ALL=(ALL) NOPASSWD: ALL ↑先頭の#を削除
suコマンドをwheel内のユーザーだけが実行できるようにする
[root@host ~]# vi /etc/pam.d/su -- #auth required pam_wheel.so use_uid ↑先頭の#を削除
参考
なぜ sudo する権限のあるグループが「 wheel 」という名前なのか
suについて(wiki)
3. ssh接続するための作業ディレクトリ作成
rootからログアウト
[root@host ~]# exit logout CentOS release 6.6 (Final) Kernel 2.6.32-504.1.3.el6.x86_64 on an x86_64
hogeでログインしてルートに入れるか確認した後にhogeのssh用のディレクトリ作成
host login:hoge Password: [hoge@host ~]$ sudo su [root@host hoge]# exit [hoge@host ~]$ [hoge@host ~]$ mkdir /home/hoge/.ssh [hoge@host ~]$ chmod 700 /home/hoge/.ssh [hoge@host ~]$ ls -al /home/hoge drwx------ 2 hoge hoge 4096 Nov 15 22:55 .ssh
chmod 700
所有者はディレクトリに対してあらゆる操作が可能。所有者以外はディレクトリに対する操作は一切不可(ディレクトリ内を見ることはできない)
4. macにて公開鍵を作成
鍵を作成
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/Users/hoge/.ssh/id_rsa): /Users/hoge/.ssh/sakura_rsa Enter passphrase (empty for no passphrase): Enter same passphrase again:
作成した鍵の確認
$ ls -al /Users/hoge/.ssh -rw------- 1 hoge staff 1766 11 16 01:47 sakura_rsa -rw-r--r-- 1 hoge staff 420 11 16 01:47 sakura_rsa.pub
公開鍵をmacからscpでvpsに配置
$ scp ~/.ssh/sakura_rsa.pub hoge@[IP Address]:/home/hoge/.ssh
5. vpsにて公開鍵の設定
scpで送信された公開鍵を設定
[hoge@host ~]$ cd /home/hoge/.ssh [hoge@host ~]$ cat id_rsa.pub >> authorized_keys [hoge@host ~]$ chmod 600 authorized_keys
sshd_configファイルの設定
[hoge@host ~]$ sudo vi /etc/ssh/sshd_config -- Port 10022 ↑10022に変更 -- PermitRootLogin no ↑rootでsshのログイン禁止 -- PasswordAuthentication no ↑パスワード認証を無効 -- PubkeyAuthentication yes ↑鍵認証を有効 --
sshを再起動
[hoge@host ~]$ sudo /etc/init.d/sshd restart
6. macにて./ssh/configファイルの設定
$ vi /Users/hoge/.ssh/config -- Host sakura HostName IP Address Port 10022 IdentityFile ~/.ssh/sakura_rsa User hoge --
7. macからssh接続してみる
$ ssh sakura
8. iptablesの設定
設定を追加
[hoge@host ~]$ sudo su
*データを持たないパケットの接続を破棄 [root@host hoge]# iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP *SYNflood攻撃と思われる接続を破棄 [root@host hoge]# iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP *ステルススキャンと思われる接続を破棄 [root@host hoge]# iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP *localhostからの通信を許可 [root@host hoge]# iptables -A INPUT -i lo -j ACCEPT *localhostからのpingを許可 [root@host hoge]# iptables -A INPUT -p icmp -j ACCEPT *利用するポート番号を許可 [root@host hoge]# iptables -A INPUT -p tcp -m tcp --dport 10022 -j ACCEPT *確立済みの通信を許可 [root@host hoge]# iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT *許可した通信以外のサーバに受信するパケットを拒否 [root@host hoge]# iptables -P INPUT DROP *サーバから送信するパケットを許可 [root@host hoge]# iptables -P OUTPUT ACCEPT *iptablesの設定を設定ファイルに保存 [root@host hoge]# service iptables save
iptablesの設定を確認
[root@host hoge]# iptables -L
iptablesの再起動
[root@host hoge]# /etc/init.d/iptables restart
おまけ
証明書認証を利用したい
- 証明書認証はOpenSSH5.4からなので最新バージョンにあげる
※CentOS6でのOpenSSHのデフォルトバージョンは5.3ssh -v
でsshのバージョン確認
- 最新は本家で確認
- 証明書認証をやろうとしてOpenSSHを6.7にあげようとしたがビルドに失敗したので調査せねば・・・
公開鍵認証について
Atom触ってみた
インストール
インストール自体は前書いた記事でやってるが念のため
- 公式から落とすか、homebrew-cask使うか
homebrew-caskで
brew cask install atom
さらっと触ってみて
- すごくSublime Textです。
- 似ているから乗り換えるのは楽か?
- 拡張の多さはSublimeかな。
- といってもエディタはてんこ盛りにしない派なのであまり気にならない
- フリーソフトウェア(MIT License)なのが良い。
Ctrl+Shift+m
でmarkdownプレビュー出せるの良い。- まぁ見なくて書けるけど体裁とかね
Term2入れる
別タブとかでターミナルを動かせるとのこと
apm(atom package manager)使って入れる
apm install term2
インストール自体はいけたみたいだけどショートカットで起動しない・・・
※パッケージの実体はあるけどAtomのPackages見てもない
結局AtomのPackagesから入れた
Packages > Settings View > Install Packages から
term2
と検索してインストール
Term2使う
ctrl+alt+右矢印
で起動
- 日本語は文字化けしてたが気にしないことにする
- 触った範囲はMarkdownをPandocでHTMLに変換して、
open叩いてブラウザーからレビューするとか移動やファイル操作くらい - Pandocよく使うからすげー便利になった感ある
所感
乗り換えます
備考
atom term2
でぐぐってたらTerm2のインストールに結構はまってる人いた
AtomにTerm2を入れた時に若干ハマった話
Atom エディタ Term2 パッケージインストールでエラーが出た
Atom に Term2 を導入しました
homebrew-caskが便利じゃった
Homebrew入れた
下記記事を参考に入れた
パッケージ管理システム Homebrew
準備
java
javaと叩いて入っていなかったんでインストールしますかのダイアログからそのままインストール
Xcode+Command Line Toolsをインストール
- Xcodeは少し前からアップデートでこけていたので新規入れ直した
- Command Line Toolsは以下から
xcode-select --install
Homebrewインストール
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew doctorの実施
インストールの一般的な問題をチェックする
brew doctor
XQuartzが古いとか不要ファイルがあるとか言われたんで一つ一つ解決方法みて解消
使い方
- パッケージのインストール
brew install [formula]
- パッケージのアンインストール
brew uninstall[formula]
- formulaの更新
brew update
- cellarの更新
brew upgrade
- ヘルプ
man brew
brew help
brew home [formula]
情報は割と多い印象。
これからガシガシ使っていこうと思う
Pandocの簡単なお作法的な
入出力
- ファイルが指定されていないとstdin/stdoutに
- ただし
odt
,docx
,epub
,epub3
はstdoutに出力されない - ファイルに出力したいときは
-o
オプション
フォーマットを明示的に指定
- 入力は
-r
か-f
- 出力は
-w
か-t
- 明示しなくても拡張子から推測してくれる
- 不明だと入力がMarkdown、出力がHTMLとして扱われる
対応しているMarkdown
markdown
(Pandoc拡張)markdown_strict
(オリジナル)markdown_phpextra
(PHP Markdwon Extra)markdown_github
(Github)
拡張文法の有効/無効
- フォーマットの末尾に+/- 拡張機能
markdown_strict+pipe_tables
だったら- オリジナルmarkdownにパイプテーブル追加
- 実際に使うときは以下な感じ
pandoc -o -t html out.html -f markdown_strict+pipe_tables in.md
オプション例
--toc
- 自動的に生成された目次を出力
- 見出しレベル1~3まで目次に含まれる
--toc-depth=x
- 目次に含める見出しレベルを指定することができる
--columns=x
- 一行あたりの文字数を指定してその文字数で折り返される
Pandoc標準Markdown以外の拡張例
lists_without_preceding_blankline
- 段落の後に空行置かずにリスト
hard_line_breaks
- 段落内の全ての改行が強制改行に
ignore_line_breaks
- 段落内の全ての改行が無視される
autolink_bare_uris
- リンクを囲まなくてもリンクに変換
使用例
- 強制改行つけたGithubMarkdownからスタンドアロンなHTML5にcssと目次つける
pandoc -s --toc -c hoge.css -t html5 -o output.html -f markdown_github+hard_line_breaks input.md