SSHに関するあれこれ

OpenSSH

OpenSSH(OpenBDS Secure Shell)は SSH を利用するための OSS(Open Source Software)
ssh クライアントと ssh サーバを含んでおり、業務で多用するのはおそらく ssh クライアントの方
今回はクライアントについて記述する。

ssh

ssh は secure shell の略称
ssh クライアントはリモートマシンに接続し、リモートマシンでコマンドを実行するプログラム
二つのホスト間で安全な暗号化通信を実現するのが目的

ssh コマンドオプション

-i [秘密鍵ファイル]
秘密鍵を読み込むファイルを指定する。
デフォルトでは~/.ssh/id_rsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ecdsa_sk, ~/.ssh/id_ed25519, ~/.ssh/id_ed25519_sk, ~/.ssh/id_dsa のファイルが読み込まれる。

-L
ローカル(クライアント)ホスト上の与えられた TCP ポートまたは Unix ソケットへの接続を、リモート側の与えられたホストとポート、または Unix ソケットに転送することを指定する。

-l [ログインユーザ名]
リモートマシンでログインするユーザを指定する。

ssh_config

OpenSSH クライアントの設定ファイル
これを設定することでいちいち鍵ファイルやユーザ、ポートを指定する必要がなくなる。
設定は以下の順序で適用される

  1. コマンドのオプション
    1. -i、-L、-l などのオプション
  2. ユーザ固有の設定ファイル(~/.ssh/config)
  3. システムで共通の設定ファイル(/etc/ssh/ssh_config)

例えば、IP アドレスが 50.50.50.50 のリモートホストに接続したい場合以下の情報を指定して毎回接続するのは面倒

  • ログインユーザ
  • 鍵ファイル
  • IP アドレス
ssh -i ~/Download/key.pem loginuser@50.50.50.50

ユーザ固有の設定ファイルに以下を記述すると ssh remote.host で接続できる

Host remote.host
    HostName 50.50.50.50
    IdentityFile ~/Download/key.pem
    User loginuser

Host

この Host の記述にマッチしたものが読み込まれる

グローバルに設定したい場合は Host に * を指定する

Host *
  ServerAliveInterval 60
  TCPKeepAlive yes
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null
  ForwardAgent yes

その他項目も要調査

参考

OpenSSH: Manual Pages
知っておくと便利な SSH の設定やコマンド