私は何日もこれに苦労していますが、何が間違っているのか分かりません。
私は VPS サーバー上に Web サイトを持っています。毎晩データベースのバックアップを作成します。これは VPS サーバーに保存されます。また、自宅の NAS (Synology DS214play) にもコピーを送信したいと考えています。両方のサーバーは Linux で動作します。
そこで、VPS サーバーに (root として) ログインし、 を生成しましたssh-keygen
。
私の VPS では次のようになります:
[root@vps /]# cd ~
[root@vps ~]# ls -alh
dr-xr-x---. 7 root root 4.0K Jun 25 18:58 .
dr-xr-xr-x. 24 root root 4.0K Jun 25 19:33 ..
drwx------ 3 root root 4.0K Jun 25 20:29 .ssh
[root@vps ~]# cd .ssh
[root@vps .ssh]# ls -alh
drwx------ 3 root root 4.0K Jun 25 20:29 .
dr-xr-x---. 7 root root 4.0K Jun 25 18:58 ..
-rw------- 1 root root 1.7K Jun 26 07:27 id_rsa
-rw-r--r-- 1 root root 403 Jun 26 07:27 id_rsa.pub
-rw------- 1 root root 394 Jun 25 20:29 known_hosts
次に、ファイルをNASにコピーしました。ssh-copy-id
admin@NAS:/$ cd ~
admin@NAS:~$ ls -alh
drwxrwxrwx 6 admin users 4.0K Jun 26 07:28 .
drwxrwxrwx 13 root root 4.0K Jun 21 20:57 ..
drwx------ 2 admin users 4.0K Jun 26 07:28 .ssh
admin@NAS:~$ cd .ssh
admin@NAS:~/.ssh$ ls -alh
drwx------ 2 admin users 4.0K Jun 26 07:28 .
drwxrwxrwx 6 admin users 4.0K Jun 26 07:28 ..
-rw------- 1 admin users 403 Jun 26 07:27 authorized_keys
調べてみるVPS/id_rsa.pub
と、NAS/authorized_keys
両方のキーが同一であることがわかりました。
今、私は以下を使用して VPS から NAS にテスト ファイルをコピーしようとしています:
[root@vps /]# scp -i ~/.ssh/id_rsa /test.txt admin@___.___.___.___:/volume1/SQL_backup
しかし、その結果、シェルがパスワードを(毎回)要求することになります。
なぜパスを渡し続けなければならないのですか?
答え1
デーモンに関する問題をトラブルシューティングするときは、必ずシステム ログを確認する必要があります。
この特定のケースでは、NAS
ホスト上のシステム ログを確認すると、次のような内容が表示されます。
Authentication refused: bad ownership or modes for directory /home/admin
問題は次の出力に示されています:
admin@NAS:~$ ls -alh
drwxrwxrwx 6 admin users 4.0K Jun 26 07:28 .
authorized_keys
セキュリティ上の理由から、ディレクトリの祖先~/.ssh
がユーザーまたはルート以外のユーザーによって書き込み可能である場合 (祖先とは、、、、を意味します) /home/user/.ssh
、SSHはそのファイルの使用を拒否します。これは、別のユーザーがディレクトリ (またはファイル) を自分のものに置き換えて、そのユーザーに SSH で接続できるためです。/home/user
/home
/
~/.ssh
~/.ssh/authorized_keys
修正するには、次のようにディレクトリの権限を変更します。
chmod 755 ~
答え2
. を使用して秘密鍵を作成したときに、秘密鍵のパスワードを作成した可能性がありますssh-keygen
。
私が使用するワークフローは次のとおりです。
ssh-keygen
ssh-copy-id root@remote_host
scp /test.text root@remote_host:/opt/application/