多段SSHを行う際に、何度もSSHを実行するのは面倒なので、一発で行きたいサーバにSSHする方法をメモ
こちらの記事が大変参考になりました。
ありがとうございます。
-
お前らのSSH Keysの作り方は間違っている
#SSH設定
以下を実行して既存のSSH Keysを確認
$ ls -al ~/.ssh/
drwx------@ . # ~/.ssh のパーミッションにも注意
drwxr-xr-x+ ..
-rw-r--r-- config # SSH の設定ファイル
-rw-r--r-- known_hosts
-rw------- authorized_keys # 公開鍵置き場
-rw------- id_rsa # 秘密鍵
-rw-r--r-- id_rsa.pub # 公開鍵
###パーミッションを設定
パーミッションが700じゃないと怒られる
$ chmod 700 ~/.ssh
#公開鍵の設定
SSHには、パスワード認証方式と公開鍵認証方式があるが、公開鍵認証方式の方が安全らしい
###1.公開鍵と秘密鍵を作成
- ローカル(クライアント)側で
ssh-keygen
コマンドで鍵のペアを作成
$ ssh-keygen -t rsa -C "comment "
-t
: 鍵の暗号化を指定(デフォルト:「rsa」)
-C
: コメントの追加(Githubに登録してあるEmailアドレスを入れるのが一般的らしい)
その他のオプションはこちらを参考
すると、SSH Keysの保存先とパスフレーズの入力を求められる
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/lasta/.ssh/id_rsa): <Press Enter>
# 生成される鍵の保存先の指定(任意)
Enter passphrase (empty for no passphrase): <Type A Passphrase>
# 鍵へのパスワード(任意)
Enter same passphrase again:
※パスフレーズに関してはGitHubが出しているこちらを参考
- サーバ(ホスト)側へ公開鍵(id_rsa.pub)を転送
$ scp ~/.ssh/id_rsa.pub user@host:~/
- ホスト側で公開鍵を登録
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
※Linux環境では、公開鍵の転送とホスト側での登録は以下のコマンドで1行で簡潔できる
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@host
-i
はIdenntityfile
を指定するオプションで、デフォルトが~/.ssh/id_rsa.pub
なので省略可
- SSH接続の確認
$ ssh user@host
#多段SSH
本題の多段SSHを一発で行う方法。
以下は、client->host1(踏み台)->host2という場合の例
やり方は簡単
- host2にclientの公開鍵を登録
clientのid_rsa.pub
の中身をコピーして、host2のauthorized_keys
に書き込めばOK -
~/.ssh/config
に以下を書き込む
Host host1
HostName host1.hoge.fuga
User user
IdentityFile ~/.ssh/id_rsa
Host host2
HostName host2.foo.bar
User user
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh -CW %h:%p host1
###書き方
Host
: SSHするときの名前タグ
HostName
: $ ssh user@~
の@以下
User
: $ ssh user@~
のuser名
IdentityFile
: id_rsaのパス
これで、
$ ssh host2
だけでSSH接続できる!!