パスワードログインを強制する
$ ssh -o "PreferredAuthentications password" pi@raspberrypi.local
リモートホストで実行しているプロセスにSIGINTを送りたい
-t
オプションをつけるといいっぽい
$ ssh -t host command
参考: https://blog.riywo.com/2011/04/17/005528/
パスフレーズの確認なしで鍵ペアをつくる(鍵生成の自動化)
-N
でパスフレーズを指定できるので、空文字列を指定する。
$ ssh-keygen -f .ssh/simu -N ""
鍵の指定
~/.ssh/config
Host example.com
IdentityFile ~/.ssh/example_com
Hostの現在の設定値を見たい
-
Host
の設定値がhoge
のホストの最終的な設定値を出力する
ssh -G hoge
ssh-agentに秘密鍵を追加する
ssh-add -K ~/.ssh/id_rsa
sshdの現在の設定値を見たい
sshd -T
サーバ上でホスト鍵の指紋(fingerprint)を確認する
例として、さくらVPSにはじめてsshログインするとき、sshログイン前に表示されるkey fingerprintと比較して正しいサーバに接続しにいっている(中間者攻撃されていない)ことを確認したい場合、さくらVPSのシリアルコンソール(あるいはVPSコンソール)上で、
ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
GitHubで表示されている古い形式(MD5)でfingerprintを表示する
- 最近のssh-keygenはSHA256形式でfingerprintを表示する
- しかし、GitHubのSSH keysではMD5形式のfingerprintが表示されている
-
-E md5
をつけるとGitHubと同じMD5形式で表示できる
MD5形式でfingerprintを表示する例
ssh-keygen -l -E md5 -f .ssh/authorized_keys
[WIP] ssh subsystem のつくりかた
sshにはsubsystemというしくみがあり、sshをトランスポートに使うscpやsftpのような立ち位置のアプリケーションをつくれるらしい。
IPアドレスの一致をチェックしない
ローカルネットワークで.local
ドメインを使用しているなど、頻繁にIPアドレスが変わる場合は、CheckHostIP no
でIPアドレスが変更をチェックしないように設定する。
例:
~/.ssh/config
Host raspberrypi.local
HostName raspberrypi.local
User pi
CheckHostIP no
ホスト鍵を known_hosts に追加しない
ssh -o UserKnownHostsFile=/dev/null pi@raspberrypi.local
.ssh をgitで管理する
-
.ssh
には秘密鍵などもあり普通にgitで管理するのはこわいので、.gitignore
の先頭に*
を書いてホワイトリスト方式にする - これでうっかりgit addする心配がなくなる
- 追加したいファイルはまず
.gitignore
に書く
*
!README.md
!.gitignore
!config
Includeを使うとbash-completionで補完されなくなる
- 1.x系のbash-completionだと
Include
は対応していない - 2.x系のbash-completionに入れ替えればOK
brew uninstall bash-completion
brew install bash-completion@2