LoginSignup
35
38

More than 5 years have passed since last update.

2段階SSH接続を,ProxyCommandを使って一度のsshコマンドで接続する

Posted at

以下のような構成を考える.Localは手元のサーバ,Server1は踏み台用サーバ,Server2がターゲットとなるサーバです.
2step_ssh_image
通常,何も設定していない場合は,LocalからServer1にssh接続し,Server1からServer2にssh接続します.

Local$ ssh account1@Server1
Server1$ ssh account2@Server2

あるいは

ssh -t account1@Server1 "ssh account2@Server2"

今回は,LocalからServer1には公開鍵認証方式を使って接続し,LocalからServer2へ一発のコマンドで接続する事を考える.
(Server1からServer2への接続は常にパスワードの入力を要求するように残しておくため,Server1からServer2への接続には公開鍵認証方式を用いなかった)

LocalからServer1に公開鍵認証で接続する

1.まず,Server1へ接続する

ssh account1@Server1

sshの設定で鍵の利用ができるかは「/etc/sssshd_config 」か,「/etc/ssh/sshd_config」で確認できると思う.

2.「.ssh」ディレクトリへ移動し,RSAで暗号化された鍵を生成する

cd .ssh
ssh-keygen -t rsa

パスフレーズを入力してできる「id_rsaが秘密鍵」「id_rsa.pubが公開鍵」です.

3.公開鍵をauthrized_keysとして保存し,古い公開鍵は削除する

cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
rm id_rsa.pub

4.パーミッションを変更し,ログアウトする

chmod 600 ~/.ssh/authorized_keys
logout

5.Localの「.ssh」ディレクトリへ移動し,秘密鍵をローカルへ保存する(本当はネットワーク越しに送るべきではないですが・・・)

cd .ssh
scp account1@Server1:~/.ssh/id_rsa ~/.ssh/server1_rsaKey

接続できるか確認

ssh -i server1_rsaKey account1@Server1

ProxyCommandを使って,LocalからServer2までssh接続する

ProxyCommandは,sshクライアントと標準入出力でやりとりしてくれるみたい.詳しくは「多段 ssh / rsync するために ProxyCommand を使ってみる - daily dayflower」あたりを参照.

1.「.ssh/config」に,ssh接続ごとに,接続に関する情報を以下のように書き込む

Host S1
 HostName Server1
 User account1
 IdentityFile ~/.ssh/server1_rsaKey
Host S2
 HostName Server2
 User account2
 ProxyCommand ssh S1 nc %h %p
  1. 以上より,LocalからServer2へssh接続するには,以下のコマンドでできるようになる.
ssh S2

LocalからS1(Server1)へは,公開鍵認証で接続しているのでパスフレーズを覚えてなくてもバックグラウンドで接続し,S2(Server2)への接続を試みてくれる.

これで,ssh接続を利用するscp等も,以下のように省略して利用できる

scp -r S2:/path/to/data /local/path/downloadData

ただ,以下のように書いたrsyncはなぜか利用できなかった

rsync -rav --exclude '/path/to/data/tmp/' S2:/path/to/data /local/path/downloadData
35
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
38