sshにパスワードで自動ログインするならexpectよりもsshpassを使おう

スポンサード リンク
LINEで送る
Pocket

頻繁にssh接続する場合,いちいちパスワードを入力するのは面倒だ。sshに自動的にログインしたい場合,方法は3つある。

  • パスフレーズなしの鍵を作る
  • expectでログインスクリプトを書く
  • sshpassを使う

(WindowsならTeratermマクロなど端末ソフトの機能をつかう方法もある)

一番良いのは公開鍵暗号方式でパスフレーズなしの鍵を作る方法だろうが,パスワードでログインするしかないこともある。そこで,今回はsshpassコマンドを使ったパスワード自動入力の方法を紹介する。

対象となる環境はLinuxとCygwinだ。

expectの欠点

本題に入るまえに,expectコマンドを選ばない理由について書いておく。Google検索するとssh自動ログインではexpectコマンドを使うことを勧める記事が非常に多い。しかし,expectは

  • スクリプトを書くのが面倒
  • ログイン・ログアウトが遅い
  • 日本語入力で落ちる
  • ウィンドウサイズの変更に追従できない

という欠点がある。

Screenによる画面の分割にも追従できないので,いちいちログインしなおさなければならず非常に不便である。sshpassコマンドなら,上記の欠点はすべて解決できる。

sshpassのコンパイル

さて,sshpassを使うためにコンパイルしよう。

まず,SourceForgeからsshpassのソースをダウンロードする。
Non-interactive ssh password auth | Free Communications software downloads at SourceForge.net
あとはconfigureしてmakeするだけ。

$ tar -xzf sshpass.tar.gz
$ cd sshpass-1.05
$ ./configure && make && make install 

sshpassの実行

sshpassによる自動ログインは簡単で,

$ sshpass -p 'password' ssh  -o StrictHostKeyChecking=no user@host

で自動的にログインできる。また,

$ sshpass -f filename ssh  -o StrictHostKeyChecking=no user@host

でファイルからパスワードを読み込むこともできる。適当にエイリアスして使おう。

なお, -o StrictHostKeyChecking=no を指定しないと初回接続時に接続先ホストの確認メッセージがでてしまい,sshpassで自動ログインできなくなる。

関連する記事

LINEで送る
Pocket



カテゴリー: CentOS, Cygwin, Debian, Fedora, コマンドメモ パーマリンク

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
また,TeX の記法で数式を入力する場合は [latexpage] とコメントの最初に入力してください(QuickLaTeX の機能です)。
例: [latexpage] $\frac{1}{2}$

ERROR: si-captcha.php plugin: GD image support not detected in PHP!

Contact your web host and ask them to enable GD image support for PHP.

ERROR: si-captcha.php plugin: imagepng function not detected in PHP!

Contact your web host and ask them to enable imagepng for PHP.