株式会社アイズ・ソフトウェア

/~eyes-software-co-jp/A1A2
お問い合わせ |  情報セキュリティへの取組について情報セキュリティ方針個人情報保護方針) |  ブログ

BLOG 社員ブログ

2020年04月

ssh/scpでパスワード無しで接続する方法

以前参加したプロジェクトで、複数のLinuxマシン間で設定ファイルを共有したいという要求がありました。
普通であれば、nfsやSMBでファイル共有するのですが、そのプロジェクトはファイルサーバーを持たないシステムでした。
そこで、scpを利用してリモートコピーでファイル等化を実現しようということになりました。 幸い、等化元となるファイルの存在するマシンは決まっていたので、 システム起動時にそのマシンからファイルをscpでコピーすることで実現可能でした。
通常scpはコピー時にパスワードを聞いてきますが、下記の設定を行う事でパスワード入力が不要となるようにしました。

設定方法について以下に例をあげて記載します。
この例では コピー元マシンのIPアドレス、ユーザー名は以下としています。
     IPアドレス:192.168.1.10
    ユーザ :user1
    パスワード:pass1
コピー先のマシンのIPアドレス、ユーザー名は以下とします。
    IPアドレス:192.168.1.11
    ユーザ :user2
    パスワード:pass2

コピー元マシンにログインし、以下のコマンドを入力します。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user1/.ssh/id_rsa):
Created directory '/home/user1/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user1/.ssh/id_rsa.
Your public key has been saved in /home/user1/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:p7Jl9VtQhtEdQHdP6Y1boxApXDbuLaEgD399OXey4go user1@192.168.1.10
The key's randomart image is:
+---[RSA 2048]----+
|        . .+++.+=|
|         ooo.ooo+|
|     o .  .oo +.o|
|      = . +.ooooo|
|       oSoo+o=o+o|
|        .+ .oo+o.|
|      . E   o o  |
|       = . . +   |
|      .   ..o    |
+----[SHA256]-----+

$ ssh-copy-id -i ~/.ssh/id_rsa.pub user2@192.168.1.11
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user1/.ssh/id_rsa.pub"
The authenticity of host '192.168.1.11 (192.168.1.11)' can't be established.
ECDSA key fingerprint is SHA256:yYVW4kiK3FlmSR+PPodLBhmH9sNdpivwwStcln+L76A.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user2@192.168.1.11's password: pass2
Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'user2@192.168.1.11'"
and check to make sure that only the key(s) you wanted were added.
上記手順の中で、ssh-keygen コマンドはファイル名やパスフレーズの入力を求められますが、何も入力せずにエンターキーを押してください。
ssh-copy-idコマンドではパスワードの入力が求められます。コピー先ユーザーのパスワードを入力してください
これでパスワード無しでscpやsshができるようになります。
ssh-copy-idの出すメッセージの最後にあるように、"ssh user2@192.168.1.11" でコピー先ユーザーへログインしてみましょう。

以上