~/.ssh/config
Host __r_target_8080 Hostname forwarder User UserName LocalForward 8080 target:80
これでssh接続をするとforwarder
に接続されます
その状態でlocalhost:8080
にアクセスすると target:80
にフォワードされます
なお、forwarder
のアクセスへ踏み台(basion)が必要な場合は普通に踏み台経由でssh接続するときと同じように記述すればOKです
ProxyCommand ssh -W %h:%p basion
通常は.bashrcなどに記述するが、tcshなども利用しているので以下のスクリプトを作成
#!/bin/sh # for ssh-agent cd ~ if [ -f ~/.ssh-agent ]; then . ~/.ssh-agent fi if [ -z "$SSH_AGENT_PID" ] || ! kill -0 $SSH_AGENT_PID; then /usr/bin/ssh-agent -s > ~/.ssh-agent . ~/.ssh-agent fi ssh-add -l > /dev/null 2>&1 || ssh-add
ForwardAgent が有効な状態で、ssh ログインしなおすと、環境変数SSH_AUTH_SOCK が新しくなるが、リアタッチ1)したtmux ではセッション上のシェルは以前の SSH_AUTH_SOCK の値を保持し続けているためうまく動かない
CentOSなどはデフォルトで許可されているので注意
# cat /etc/ssh/sshd_config | grep Permit PermitRootLogin no
認証用の秘密鍵と公開鍵のペアが作成される
安全性からed25519を推奨します 2017.05.222)
$ cd $ ssh-keygen -t ed25519 OR $ ssh-keygen -t rsa -b 4096 OR $ ssh-keygen -t rsa -b 4096 -N "passphrase" -f /path/to/keyfile -C comment
利用可能な鍵証明書一覧
$ ssh -Q key-cert
利用可能な鍵一覧
$ ssh -Q key
$ ssh-keygen -l -f ~/.ssh/id_ed25519.pub 256 SHA256:71.......................................nQ user@host (ED25519) $ ssh-keygen -l -f ~/.ssh/id_ecdsa.pub 384 SHA256:6z7QX....................................Ew user@host (ECDSA) $ ssh-keygen -l -f ~/.ssh/id_rsa.pub 4096 SHA256:/p5W9....................................IQ user@host (RSA)
$ cat ./.ssh/id_rsa.pub | ssh user@remote_host "cat >> ./.ssh/authorized_keys"
.sshディレクトリがないと失敗するのでその場合には
$ ssh user@remote_host "mkdir ./.ssh && chmod 700 ./.ssh"
とかやってディレクトリを作っておく。
CentOSならssh-copy-idが入っているのでそちらを使うも良し。
FreeBSDにも入りました。3)
FreeBSDはPortsのsecurity/ssh-copy-idでインストールしても良いのですがpkgngにはありません。4)
$ ssh-copy-id -i .ssh/id_rsa.pub user@remote_host
なお、authorized_keysはPermissionを 600にしておかないとLogin に失敗するので注意
# cat /etc/ssh/sshd_config ...... PasswordAuthentication no ChallengeResponseAuthentication no
FreeBSDは標準でPasswordAuthentication を禁止しているがChallengeResponseAuthentication は許可されているのでこちらも必ず「No」にしておく。
Ubuntuで「/etc/ssh/sshd_config.d/50-cloud-init.conf」に以下の設定があったためこちらも禁止にする
#PasswordAuthentication yes PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFileを指定すると、このマシンから他へssh接続する際にBad configuration option: AuthorizedKeysFileと表示して落ちます。5)
.ssh/configファイルで複数サーバーのSSH接続を管理
Host example HostName example.com Port 10022 User nanako IdentityFile ~/.ssh/id_rsa.example
これで以下のようにアクセス可能
$ ssh example
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
ssh-keygen -lf ~/.ssh/id_rsa.pub
host="target-hostname" ssh-keygen -R $host ssh-keyscan -H $host >> ~/.ssh/known_hosts