LoginSignup
20
22

More than 5 years have passed since last update.

3段も4段もへっちゃら多段SSH簡単鍵認証

Last updated at Posted at 2018-11-01

概要

「どんだけセキュリティ意識高めなの!?」というのは冗談で、 様々な事情があり4段SSH接続しなければいけない状況になった。
とてもやっていられないのでSSH鍵認証を駆使してコマンド一発で4段目まで入れるようにしたメモ。
多分来年には状況が変わっているので2018年版。

環境(登場人物)

  • ローカル
  • 1段目:踏み台サーバ1(step1)
  • 2段目:踏み台サーバ2(step2)
  • 3段目:踏み台サーバ3(step3)
  • 4段目:目的地サーバ(step4)

実は鍵は共通でも良いけど上司に怒られるので予防の為に分けておく。

ポイント

  • ~/.ssh/config書くのはローカルのみ
  • 秘密鍵はローカルでのみ管理
  • 経由するサーバは公開鍵を置くだけ

手順

cd ~/.ssh/

作業はここで行うのが楽。

ローカル環境で鍵作成。

ssh-keygen -C "step1の鍵" -f step1key -t ecdsa -b 256 -N ""
ssh-keygen -C "step2の鍵" -f step2key -t ecdsa -b 256 -N ""
ssh-keygen -C "step3の鍵" -f step3key -t ecdsa -b 256 -N ""
ssh-keygen -C "step4の鍵" -f step4key -t ecdsa -b 256 -N ""

パスフレーズなし。
楕円曲線暗号256bitが使えない環境の場合は「-t rsa -b 4096」辺りで。

step1key,step1key.pub
step2key,step2key.pub
step3key,step3key.pub
step4key,step4key.pub
が作成されます。

ローカルの.ssh/config設定。

.ssh/config
Host step1
  HostName step1.jp
  User username1
  IdentityFile ~/.ssh/step1key

Host step2
  HostName step2.jp
  User username2
  ProxyCommand ssh -W %h:%p step1
  IdentityFile ~/.ssh/step2key
  ForwardAgent yes
  ForwardX11 yes
  ServerAliveInterval 300
  ForwardX11Timeout 596h
  ControlMaster auto
  ControlPath ~/.ssh/mux-%C
  ControlPersist 10

Host step3
  HostName step3.jp
  User username3
  ProxyCommand ssh -W %h:%p step2
  IdentityFile ~/.ssh/step3key
  ForwardAgent yes
  ForwardX11 yes
  ServerAliveInterval 300
  ForwardX11Timeout 596h
  ControlMaster auto
  ControlPath ~/.ssh/mux-%C
  ControlPersist 10

Host step4
  HostName step4.jp
  User username4
  ProxyCommand ssh -W %h:%p step3
  IdentityFile ~/.ssh/step4key
  ForwardAgent yes
  ForwardX11 yes
  ServerAliveInterval 300
  ForwardX11Timeout 596h
  ControlMaster auto
  ControlPath ~/.ssh/mux-%C
  ControlPersist 10

step1に公開鍵配置。

ssh-copy-id -i step1key.pub step1

まだ鍵置いてないので最初はパス聞かれます。

同様にstep2,step3,step4と置いていく。

ssh-copy-id -i step2key.pub step2
ssh-copy-id -i step3key.pub step3
ssh-copy-id -i step4key.pub step4

ssh-copy-idが使えない場合はこれで代用。

cat step1key.pub | ssh username1@step1 "mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys"

設定完了。

ssh step4

これで4段目に入れます。
便利すぎてもう仕事終わった気分。

鍵認証されない時

permissionを疑う

~/.ssh は 700
~/.ssh/authorized_keys は 644
~/.ssh/秘密鍵 は 600
/home/username は 755

/etc/ssh/sshd_config の「ForwardX11 no」になってない?

設定変更してsshd再起動。できない場合、管理者に頼む。駄目なら諦めてローカルからはコマンド2発になるけどそこから鍵認証設定する。

参考URL

ssh-keygenをパスフレーズの確認なしで作成する
https://qiita.com/genreh/items/acfa49f569f665c8f024

SSH keyを4096bitで作成する
https://qiita.com/hietahappousai/items/a7fae4838e510136fc08

Wokashi: サーバに新たなSSH公開鍵を追加する
http://mironal-memo.blogspot.com/2012/07/ssh.html

多段sshを行うときに、ローカルの秘密鍵を参照し続ける
https://qiita.com/himo/items/5eb833ad757bd8b3e6c3

ProxyCommandによるsshの多段接続について -- ぺけみさお
https://www.xmisao.com/2013/10/08/ssh-proxy-command.html

Fix unix_listener too long for Unix domain socket
https://gist.github.com/andyvanee/bcf95b1044b80e72b4a42933549a079b

OpenSSHのセッションを束ねるControlMasterの使いにくい部分はControlPersistで解決できる - Dマイナー志向
http://d.hatena.ne.jp/tmatsuu/20120707/1341677472

SSH 多段接続で三段先のサーバに接続する - らくがきちょう
http://sig9.hatenablog.com/entry/2016/07/05/230000

20
22
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
20
22