コンテンツにスキップ

Top

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

以上。