UbuntuからSSHでログインするときにパスワードも一緒に設定して自動ログインする
SSHでログインするときに、当然だがパスワード入力が要求される。
手で入力する場合は良いが、シェルスクリプトなどで接続する場合は困る。
(シェルスクリプトで接続するケースを思いつかんがまぁいいや)
よって、1行のコマンドラインでSSHログインができるように、sshpassを使って自動ログインする方法を述べる。
sshpassのインストール
パスワードを自動で入力するために、sshpassというパッケージを用いるのでインストールする。
$ sudo apt install -y sshpass
使い方は、以下のようにsshの前につけるだけ。
$ sshpass -p "password" ssh hogehoge.work
これでパスワードを入力したのと同じことになる。
ただ、初めての接続時に出てくる、以下の問題にどう対応するか?
また、初めてでなくても、相手側のサーバーが以前と違った場合(再インストールされた場合など)だと、以下のような問題も起きる。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
Please contact your system administrator.
Add correct host key in /home/xxxxxxx/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/xxxxxxx/.ssh/known_hosts:1
remove with:
ssh-keygen -f "/home/xxxxxxx/.ssh/known_hosts" -R "xxxxxxxxxxxxxxxxx"
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
これではおちおち自動化できないので、以下の引数をつける。
-o "StrictHostKeyChecking no"
この引数をつけると無視して入る。
$ sshpass -p "password" ssh -o "StrictHostKeyChecking no" hogehoge.work
以上。