SSHでパスワードの入力なしにログインする方法 [サーバ関連]
たとえば、スクリプトやcrontabを用いてSCP経由でファイルを自動的に転送したい場合、
パスワードの入力を求められると、自動化が行えません。
このような場合は、ログイン元のPCの公開鍵を作成し、
ログイン先のPCに置いておきます。
手順は以下の通りです。
1. ログイン元のPCにて、公開鍵を生成します。
root権限で以下を入力します。
パスフレーズの入力を求められますが、何も入力しないでおきます。
/.ssh/ 以下に、id_dsa.pub が生成されます。これが、公開鍵です。
この公開鍵は、1度だけ生成すれば、どのログイン先PCにも使用できます。
2. ログイン先のPCに、ログイン元のPCの公開鍵を転送します。
まず、ログイン先PCのログインユーザ(ここでは仮に username とします)ディレクトリに
.ssh というフォルダがあるかどうか確認し、存在しなければ生成しておきます。
(隠しフォルダになっているので、 ls に -a オプションをつけて確認します)
.sshディレクトリのパーミッションは、必ず700(rwx------)にしてください。
ログイン元PCの公開鍵をSCPなどで転送します。
以下は、ログイン元PCからSCPでファイルを転送する方法です。
(USBメモリなどでコピーしてもかまいません)
ログイン先PCで以下の作業を行います。
(id_dsa.pub は ユーザディレクトリ直下においてある前提です)
3. ログイン元PCからSSHでログイン先にログインしてみます。
パスワードの入力なしにログイン出来れば、成功です。
パスワードの入力を求められると、自動化が行えません。
このような場合は、ログイン元のPCの公開鍵を作成し、
ログイン先のPCに置いておきます。
手順は以下の通りです。
1. ログイン元のPCにて、公開鍵を生成します。
root権限で以下を入力します。
# ssh-keygen -t dsa
パスフレーズの入力を求められますが、何も入力しないでおきます。
/.ssh/ 以下に、id_dsa.pub が生成されます。これが、公開鍵です。
この公開鍵は、1度だけ生成すれば、どのログイン先PCにも使用できます。
2. ログイン先のPCに、ログイン元のPCの公開鍵を転送します。
まず、ログイン先PCのログインユーザ(ここでは仮に username とします)ディレクトリに
.ssh というフォルダがあるかどうか確認し、存在しなければ生成しておきます。
(隠しフォルダになっているので、 ls に -a オプションをつけて確認します)
.sshディレクトリのパーミッションは、必ず700(rwx------)にしてください。
$ mkdir -m 700 /home/username/.ssh
ログイン元PCの公開鍵をSCPなどで転送します。
以下は、ログイン元PCからSCPでファイルを転送する方法です。
(USBメモリなどでコピーしてもかまいません)
# scp /.ssh/id_dsa.pub username@ログイン先IP:/home/username
ログイン先PCで以下の作業を行います。
(id_dsa.pub は ユーザディレクトリ直下においてある前提です)
$ cd /home/username/.ssh
$ touch authorized_keys2
$ chmod 600 authorized_keys2
$ cat ../id_dsa.pub >> authorized_keys2
$ touch authorized_keys2
$ chmod 600 authorized_keys2
$ cat ../id_dsa.pub >> authorized_keys2
3. ログイン元PCからSSHでログイン先にログインしてみます。
パスワードの入力なしにログイン出来れば、成功です。
コメント 0