簡単!パスワード無しでsshログイン

Linux

サーバー管理には必須なsshですが、毎回ログインする際にパスワード認証だと面倒なのもありますが、セキュリティ的にも不安なところがあります。
そこで、今回は認証鍵を利用するログインに切り替えるための作業を行っていきたいと思います。

 

サーバー間でのssh接続のため、WindowsやMacで何かクライアントを利用すると言う場合には、ちょっと変わってくる部分がありますが、ある程度の応用で行けます。

 

クライアント設定

まず、ログインするためのユーザー(サーバーにログインする際のユーザー)を作成します。
※rootでサーバーにログインできる場合には、特に作成の必要はないです。
[shell]
useradd loginuser

id -a loginuser

passwd loginuser
[/shell]

 

ユーザーを作成したら、この時点で接続が可能か確認してみましょう。
※ログイン時にパスワードを聞かれるはずです。
[shell]
su loginuser

ssh server
[/shell]

 

無事にログインが出来れば、ここまではトラブル無く進んでます。
もし、接続が出来ない場合には、サーバーの設定などを確認してみてください。

 

では、次にログイン時にパスワードを利用せずに「鍵」を使うための設定です。

 

まずは、鍵を作成しますが、「.ssh」ディレクトリがあるかを確認しておきましょう
[shell]
su loginuser

ls -la ~loginuser/
[/shell]

 

「.ssh」ディレクトリが存在しない場合には、サクッと作っておきましょう。
ある場合には、ここは飛ばして次に行きます。
[shell]
mkdir -pm 700 ~loginuser/.ssh/

ls -la ~loginuser/
[/shell]

 

鍵の作成には、次のコマンドを実行します。
[shell]
ssh-keygen -t dsa
[/shell]

 

実行後に、下記のような入力が求められますが「Enter」を連打で問題ないです。
[shell]
Enter file in which to save the key (/home/loginuser/.ssh/id_dsa):

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
[/shell]

 

鍵が出来ているかを確認します。
※下記の2つのファイルがあることを確認します。
[shell]
ls -la ~/loginuser/.ssh/

total 20
drwx—— 2 loginuser loginuser 4096 Mar 28 12:56 .
drwx—— 7 loginuser loginuser 4096 Mar 28 12:56 ..
-rw——- 1 loginuser loginuser 668 Mar 28 12:56 id_dsa
-rw-r–r– 1 loginuser loginuser 609 Mar 28 12:56 id_dsa.pub
[/shell]

 

鍵が作成されていることを確認したら、サーバーへ鍵をコピーします。
[shell]
scp /home/loginuser/.ssh/id_dsa.pub loginuser@server:/home/loginuser
[/shell]

 

ここまでで、クライアント側で行うことは全て終わりです。
次にサーバー側での設定を行います。

 

サーバー設定

端末へsshでログインしたら、先ほどscpでコピーしたファイルが存在するかを確認します。
[shell]
ls -l ~loginuser/id_dsa.pub
[/shell]

 

ファイルがあることを確認できたら、次に鍵を所定の位置に設置します。
配置する際に、配置するディレクトリおよび鍵の名称を変更する点に注意が必要です。
※ディレクトリがある場合には、ディレクトリ作成は必要ないです。
[shell]
mkdir -pm 700 ~loginuser/.ssh/

cp ~loginuser/id_dsa.pub ~loginuser/.ssh/authorized_keys

chmod 600 ~loginuser/.ssh/authorized_keys
[/shell]

 

ここまで設定が完了できたら、サーバー側のsshdの設定を変更します。
[shell]
vi /etc/ssh/sshd_config
[/shell]

 

編集する箇所は、下記の部分となります。
※恐らくコメントアウトされているので、「#」を取るだけでも問題ありません。

変更前
[shell]
# PubkeyAuthentication yes
[/shell]

 

変更後
[shell]
PubkeyAuthentication yes
[/shell]

 

ここまで設定ができたら、sshdの再起動をします。
[shell]
/etc/init.d/sshd restart
[/shell]

 

ここまでで問題がない場合には、接続ができるかの確認に移ります。

 

接続確認

クライアント側へ接続を行った上で、下記コマンドを実行します。
※ユーザーは「loginuser」になっていることを確認して下さい。
[shell]
ssh server
[/shell]

 

初回のみ、下記のようなメッセージがでますが「yes」で問題ありません。
[shell]
Are you sure you want to continue connecting (yes/no)?
[/shell]

 

「yes」を選んだ時点で、サーバーへの接続ができているはずです。
もし、接続が出来ない場合には、ユーザーを確認してみてください。

 

1度設定が出来てしまえば、ずーっと「ssh server」だけでログインが出来るようになるので、とても楽になります。

設定を間違えて、サーバー側のsshdが起動しなくなった・・・なんてことも何回かやったことがあるので、多少の作業リスクはありますが、サーバー側へ接続をした状態で接続確認をすることで、そのリスクも回避できるはずです。

コメント

タイトルとURLをコピーしました