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

以下のような構成を考える.Localは手元のサーバ,Server1は踏み台用サーバ,Server2がターゲットとなるサーバです.



通常,何も設定していない場合は,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


    以上より,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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值