ssh -o BatchMode=yes
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
StrictHostKeyChecking=noでホスト鍵のチェックを抑止して無条件でホスト鍵ファイルを更新。
UserKnownHostsFile=/dev/nullでホスト鍵ファイルの更新を無効化。
ssh -o ConnectTimeout=30 -o ServerAliveInterval=10
ConnectTimeout=30で接続タイムアウトを30秒に変更。
ServerAliveInterval秒間隔でkeep-aliveを送信し、ServerAliveCountMax回(デフォルト3回)応答が無いと終了するので、
上記の例では30秒無応答なら終了。
ssh -o ControlMaster=auto -o ControlPath="%C" -o ControlPersist=60s
ログアウトした後、60秒間接続を維持する。
複数セッションによる接続の共有が有効になるので注意。ControlPathで作成したソケットを使用して接続を共有できてしまうため、他のユーザがアクセス出来ないディレクトリから実行する。
例えば、下記のように複数の踏台を経由するネットワークで、clientからtargetへssh targetで接続したい場合。
+--------+ +----------+ +----------+ +--------+
| client |--------------| gateway2 |--------------| gateway1 |--------------| target |
+--------+ 192.168.3.1+----------+ 192.168.2.1+----------+ 192.168.1.2+--------+
Host gateway2
HostName 192.168.3.1
User gw2user
Host gateway1
HostName 192.168.2.1
User gw1user
ProxyCommand ssh -W %h:%p gateway2
Host target
HostName 192.168.1.2
ProxyCommand ssh -W %h:%p gateway1
-Wは-CWでもOK、-Cはデータ圧縮なので経由するネットワークが細い場合におすすめHost単位にIdentityFileで秘密鍵を指定できる??要チェック??Host gateway2
HostName 192.168.3.1
User gw2user
Host gateway1
HostName 192.168.2.1
User gw1user
Host target
HostName 192.168.1.2
ProxyJump gateway2,gateway1
ProxyJumpはコマンドラインオプションの-Jでも指定可能。
踏み台の認証方法などは~/.ssh/configに記述しておく。
ssh -J gateway2,gateway1 192.168.1.2
gatewayを踏み台にして、SOCKSに対応したアプリで接続する。
ssh -nTND 1080 gateway
1080はプロキシのポート番号で任意。
SOCKSに対応したアプリで、
プロキシの種類をSOCKS5に、localhost:1080をSOCKSサーバに設定する。
ポート番号の前にコロンを置き:1080とすると、全てのインタフェースで接続を受け付ける。
限定したい場合はコロンの前にIPアドレスを記述する。
sshdサーバのUseDNSがyesの場合、ネームサーバへの接続がタイムアウトするまで待たされる。
UseDNS no
PermitRootLogin no
noだとrootユーザでログインできなくなる。
prohibit-passwordにするとパスワード認証は拒否されるが、公開鍵認証ならログインできる。
yesなら制限なし。
sshで公開鍵を使用した認証は成功しているのに、key_load_public: invalid formatと警告が出る場合は、
公開鍵ファイルのフォーマットが正しくないか壊れている。
PuTTYとOpenSSHで公開鍵のフォーマットが異なるので、PuTTYのPEM形式のファイルをOpenSSHでも使うと起こる。
ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub
PuTTYから
File > Load private key > id_rsa.ppkを指定Conversions > Export OpenSSH key > id_rsaに出力ssh-keygen -f ~/.ssh/id_rsa -y -e -m pem > ~/.ssh/id_rsa.pem
ssh-keygen -f ~/.ssh/id_rsa.pub -e -m pem > ~/.ssh/id_rsa.pem