memo

SSH, SCP

Tips

キーペア作成

ssh-keygen -t ed25519 -P "" -f hoge.pem

(参考) 2017年版 SSH公開鍵認証で使用する秘密鍵ペアの作り方

一定時間経過すると自動的にログアウトする。

環境変数 TMOUT を設定。
(例) /etc/profile に

export TMOUT=300

を指定すると、5分間操作がなかった時に自動ログアウトされます。

ネットワークの問題(NATテーブルのタイムアウトなど)により、一定時間操作しないと切断されてしまう。

IPv4 だけで接続する、または Ipv6 だけで接続する。

~/.ssh/config に指定する

ホストに初めて接続すると時、ホストキーをチェックせず、known_hosts ファイルにも記録しない

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 192.168.1.1 * 設定ファイルに記述する     ```   vi ~/.ssh/config   Host 192.168.1.*
 StrictHostKeyChecking no
 UserKnownHostsFile=/dev/null   ``` * 複数ホスト指定する場合はスペースで区切る     ```   Host www.hoge.com www.fuga.com
 StrictHostKeyChecking no
 UserKnownHostsFile=/dev/null   ```

参照する秘密鍵の優先順位

  1. ~/.ssh/config に接続先ホストで使用する秘密鍵が指定されているとそれを使う。
  2. ~/.ssh/ に次の名前のファイルがあるとそれを使う。
    id_rsa
    id_dsa
    id_ecdsa
    id_ed25519
    
  3. ssh-agent を使って秘密鍵をメモリー上に登録しているとそれを使う。

秘密鍵のパスフレーズを変更

ssh-keygen -p -f ~/.ssh/<private_key_file>

パスフレーズを削除する場合は、新しいパスフレーズを入力するプロンプトで空 Enter

ポートフォワード

ローカルポートフォワードでリスンするポートを別ホストからも接続できるよう、全NICにバインドしたい

ssh -g -L 22:anotherhost:54322 user@host
-g パラメータを付ける

リモートフォワードで、リモートホストがリスンするポートを、別ホストからも接続できるよう、全NICにバインドしたい

リモートホストの /etc/ssh/sshd_config に次の行を追記
GatewayPorts yes

ファイル転送

scpでコピーしたいが、1回の通信でコピー後にリネームまで行いたい

ssh経由で標準入力からファイルに書き込み、リネームするコマンドを発行する

cat hoge.bin | ssh usr@192.168.1.1 'cat - > /tmp/hoge.tmp; mv /tmp/hoge.{tmp,bin}'

pv コマンドを挟むと、転送速度の調節(帯域制限)できる

cat hoge.bin | pv -L 1m | ssh usr@192.168.1.1 'cat - > /tmp/hoge.tmp; mv /tmp/hoge.{tmp,bin}'

scp でスペースを含むディレクトリに対してコピーする

(例) vmware 仮想イメージをディレクトリごとコピーする場合

scp -pr centos root@172.16.1.1":/var/lib/vmware/Virtual\ Machines/

設定ファイル

設定ファイルのパスを指定する。
-F <config path>
SSH でポートフォワードする時、1023 より下のポート番号を転送元に指定する場合、管理者権限が必要になるものの、SSH 接続設定ファイルは一般ユーザー配下に作成していて管理者権限では参照されない場合など。

ssh hoge -L 80:127.0.0.1:80 -F ~hoge/.ssh/conf.d/hoge.conf

認証

ssh-agent を使って、秘密鍵を追加

eval `ssh-agent`
ssh-add <秘密鍵のパス>

トラブルシューティング

Too many authentication failures でログインできない

  1. コマンドラインパラメーターに「-o PreferredAuthentications=password」を追加する。
    (例)
    ssh -o PreferredAuthentications=password 192.168.1.1
  2. ssh-add -D を実行してみる。