sshを便利にする

背景

  • sshログインして管理するサーバーが増えてきたのですが、全部のサーバーに自分の鍵ファイルをセットしておくわけにもいきません。
  • しかたなく、~/.ssh/ にいろんなサーバーの秘密鍵ファイルを置き、いちいち下記のように指定していました。
ssh -i ~/.ssh/honban_server_id_rsa user@honban_server.example.com
  • 長い。
  • メンドクサイ。
  • 履歴から引っ張り出して実行
  • 間違って別なサーバーへアクセス
  • 別のサーバーにデプロイ

サーバーごとに設定できる

ユーザーごとの設定ファイル

~/.ssh/config

全体の設定ファイル

/etc/ssh/ssh_config

設定例

鍵ファイルを指定する

  • 記述例
Host honban_server.example.com
  IdentityFile ~/.ssh/honban_server_id_rsa
  • 実行例
ssh user@honban_server.example.com


ポートを指定する

  • 記述例
Host honban_server.example.com
  Port 10022

踏み台

  • honban_server.example.comへアクセスするために、fumidai.example.comへログインする必要がある場合の記述例
Host honban_server.example.com
  ProxyCommand ssh fumidai_user@fumidai.example.com nc %h %p

ポートフォワード

  • gateway.example.comへssh接続し、内部の別サーバー mysql.localnetへのポートフォワーディングを行う
HostName gateway.example.com
LocalForward 13306 mysql.localnet:3306
  • コマンドで実行する場合
ssh -L 13306:mysql.localnet:3306 gateway.example.com
  • 上記接続した状態で、ローカルホストの 13306へ接続すると、gateway.example.comを経由し、mysql.localnetの3306へ通信できる。
telnet localhost 13306

詳しくは

man ssh_config

facebook slideshare rubygems github qiita