SSHに関するあれこれ
公開: 2023/04/29
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 クライアントの設定ファイル
これを設定することでいちいち鍵ファイルやユーザ、ポートを指定する必要がなくなる。
設定は以下の順序で適用される
- コマンドのオプション
- -i、-L、-l などのオプション
- ユーザ固有の設定ファイル(~/.ssh/config)
- システムで共通の設定ファイル(/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
その他項目も要調査