나는 며칠 동안 이 문제로 어려움을 겪고 있는데 내가 뭘 잘못하고 있는지 찾을 수 없습니다.
VPS 서버에 웹사이트가 있습니다. 매일 밤 데이터베이스를 백업합니다. 내 VPS 서버에 저장됩니다. 또한 집에 있는 NAS(Synology DS214play)로 복사본을 보내고 싶습니다. 두 서버 모두 Linux에서 실행되고 있습니다.
그래서 저는 VPS 서버에 (루트로) 로그인하고 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는 ~/.ssh
사용자 또는 루트(조상은 /home/user/.ssh
, /home/user
, /home
, 를 의미)가 아닌 다른 사람이 디렉토리의 상위 항목에 쓸 수 있는 경우 /
파일 사용을 거부합니다 . 이는 다른 사용자가 ~/.ssh
디렉터리(또는 파일)를 자신의 디렉터리(또는 파일)로 바꾼 ~/.ssh/authorized_keys
다음 SSH를 통해 해당 사용자에 로그인할 수 있기 때문입니다.
이 문제를 해결하려면 다음과 같이 디렉터리의 권한을 변경하세요.
chmod 755 ~
답변2
개인 키를 생성할 때 개인 키에 대한 비밀번호를 생성할 수 있습니다 ssh-keygen
.
제가 사용하는 워크플로는 다음과 같습니다.
ssh-keygen
ssh-copy-id root@remote_host
scp /test.text root@remote_host:/opt/application/