ssh接続をちょこっと楽にする

~/.ssh/config がssh(クライアント側)の設定ファイル。
ここにオプションを書きこんでおけば、長いホスト名やユーザ名を入力する必要がなくなったりする。

ホスト名

名前解決ができない環境の場合、ssh接続するために、IPアドレスを指定しないといけない。
しかも、同じネットワーク内に複数の名前解決できないサーバがあった場合、
最後の部分しか違わないのに全部打ち込まないといけないことになる。
また、名前解決ができる場合でも、外部からだとホスト名だけでは接続できない。
となると、毎回毎回同じようなサーバの名前を打ち込まないといけない。
# C-r で履歴検索でいいというのもあるかもしれませんが
そこで書いておくと便利な設定はこれ


Host Foo
HostName 192.168.1.5

Host Hoge
HostName 192.168.1.8

Host Test
HostName test.co.jp

Hostは自分勝手に(?)付けたホストの名前で、この名前で接続先ホストにアクセスできる。
上のように書いておけば、
192.168.1.5にssh接続するには
ssh Foo
とすればいい。これで、ssh 192.168.1.5と同じ働きをする。

ユーザ名

ホストごとにユーザが違うこともある。
それぞれのホストごとに違うユーザ名を打ち込むのもまた面倒…
これも設定ファイルに書けば省略できるので書いてしまう。


Host Foo
HostName 192.168.1.5
User user1

Host Hoge
HostName 192.168.1.8
User gest

Host Test
HostName test.co.jp
User a-man

これもホスト名の時と同じで、

ssh Foo
を実行すれば、ssh user1@192.168.1.5 と同じ働きをする。

Userの設定をした後、別のユーザでログインするにはどうすればいいか、
~/.ssh/config の設定をする前のようにコマンドを打たないといけないかと思ったが、

ssh root@Foo
のようにすれば、別のユーザでもログインができた。

実行時に反映されるオプションや引数の優先度が
コマンドライン > ~/.ssh/config > /etc/ssh/ssh_config
の順になっているかららしい
/etc/ssh/ssh_configは全員に適応されるsshクライアントの設定ファイル


とりあえず自分で使っているのはこの程度。
他にも設定はいろいろあるようで、目的のホストまでに中間ホストを経由するとき、
設定ファイルに書いておけば、中間ホストへの接続を裏でやってくれるような設定もあるらしいが、
ちゃんと動いていないので今回書くのは見送り。

その他の設定や詳細については

man ssh_config
か、検索するなどしてください。

おまけ?

本題とたいして関係がないが、.sshディレクトリや、authorized_keys, 秘密鍵 のアクセス権は600になっていないといけない。
秘密鍵を初めて作るときに、存在しないなどの理由で.sshディレクトリや、authorized_keysを自分で作ることもあったが、最初このことを知らずデフォルトのアクセス権(644)のままにしていた。
デフォルトのままだと他の人が見ることができてしまい、よろしくないとのこと。
なので変更した。
.sshディレクトリは 700
その他,authorized_keysなどは600にしておく。


$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
確認↓

$ ls -Al | grep ssh
drwx------ 2 USER_A USER_A 4096 2011-03-08 19:27 .ssh

$ ls -l
-rw------- 1 USER_A USER_A 362 2011-03-08 19:28 authorized_keys

【追記】-------------------------------------------
.pubが中身なauthorized_keysは書き込みができなければ、他のユーザから見えても大丈夫。
なのでパーミッションは600でなく。644でOKです。

                                                                                                    • -