Skip to content

ユーザ名の入力だけでコンソール / SSH ログイン出来るようにする

頻繁にログイン・ログアウトを繰り返す検証環境ではログインの手間を省く為に以下のような工夫が出来ると思います。

  1. 鍵交換方式にしてパスワード不要でログイン出来るようにする
  2. expect や TeraTerm マクロ等で、自動ログインスクリプトを作成する
  3. sshpass を使って対話的なパスワード入力を省略する
  4. (パスワードを入力せずに)ユーザ名だけでコンソールや SSH ログイン出来るようにする

今回は 4 の「ユーザ名だけでコンソールや SSH ログイン出来るように」設定してみます。セキュリティの観点からは極めて脆弱になりますので、よく危険性を理解した上で、利用する必要があります。

コンソールログインのパスワードを不要にする

/etc/passwd は一行で 1 ユーザを定義しており、例えば以下のようになっています。

1
user:x:1000:1000:user,,,:/home/user:/bin/bash

ユーザ名の後に続く "x" を削除します。修正後は以下のようになります。

1
user::1000:1000:user,,,:/home/user:/bin/bash

これでコンソールログイン時にパスワードを聞かれず、ログイン出来るようになります。

SSH ログインのパスワードを不要にする

SSH ログインのパスワードを不要にするには以下の 2 項目を設定します。

  1. sshd の設定を変更し、空パスワードでのログインを許可する
  2. 対象ユーザのパスワードを削除する

sshd の設定を変更する

SSH ログインに関する定義は /etc/ssh/sshd_config で定義されています。「空パスワードでのログインを許容する」には PermitEmptyPasswords を yes と設定します。例えば、以下のように実行します。

1
2
sed -i -e "s/^PermitEmptyPasswords no/PermitEmptyPasswords yes/g" /etc/ssh/sshd_config
sed -i -e "s/^UsePAM yes/UsePAM no/g" /etc/ssh/sshd_config

設定変更が完了したら sshd を再起動し、設定変更を反映します。

1
service ssh restart

尚、/etc/ssh/sshd_config で PermitRootLogin without-password になっている場合、root ユーザはパスワード認証でのログインは出来ません。

対象ユーザのパスワードを削除する

ユーザのパスワードを削除するには passwd -d [USERNAME] を実行します。「user」というユーザのパスワードを削除したいのであれば以下のように実行します。

1
passwd -d user

これで SSH アクセスしてもパスワードを入力せず、ログイン出来るようになりました。