다음 명령을 사용하여 작은 백업 스크립트를 만들고 있습니다 sshfs
.
sshfs backup_user@target_ip:/home /mnt/backup
이 명령에 비밀번호를 포함하는 방법이 있습니까?
아니면 FTP/SFTP 외에 로그인 비밀번호를 포함할 수 있는 다른 파일 전송 솔루션이 있습니까?
답변1
'sshfs password'
다음으로 보내기<<<
Bash에서 작업하기 -o password_stdin
:
sshfs -o password_stdin backup_user@target_ip:/home /mnt/backup <<< 'sshfs password'
암호는 작은따옴표로 묶여 있습니다. 고마워요 카일!
답변2
-o password_stdin
freeBSD와 같은 모든 시스템에서 작동하지 않는 것 같습니다. sshfs와 함께 작동하고 트릭을 수행하는
인터프리터를 사용할 수도 있습니다 . 또 다른 해결책은 예를 들어 /var/www 디렉토리를 백업한다고 가정해 보겠습니다.expect
sshpass
지원:
name=$(date '+%y-%m-%d')
mkdir /backup/$name && tar -czvf /backup/$name/"$name.tar.gz" /var/www
백업 서버에 백업 파일 업로드
sshpass -p "your_password" scp -r backup_user@target_ip:/home/ /backup/$name
그러면 오늘의 백업이 포함된 디렉터리가 업로드됩니다.
하지만그러나 위에서 말했듯이 가장 좋은(안전하고 쉬운) 방법은 SSH 키 쌍을 사용하는 것입니다.
유일한 불편한 점은 페어링해야 하는 각 서버에서 키 생성 프로세스를 한 번씩 거쳐야 한다는 점이지만, 이것이 것보다 낫습니다. 백업하려는 모든 서버에 비밀번호를 일반 텍스트로 저장합니다 :),
올바른 방법으로 키 쌍 생성
로컬 서버에서
ssh-keygen -t rsa
원격 서버에서
ssh root@remote_servers_ip "mkdir -p .ssh"
생성된 공개키를 원격 서버에 업로드
cat ~/.ssh/id_rsa.pub | ssh root@remote_servers_ip "cat >> ~/.ssh/authorized_keys"
원격 서버에 대한 권한 설정
ssh root@remote_servers_ip "chmod 700 ~/.ssh; chmod 640 ~/.ssh/authorized_keys"
로그인
ssh root@remote_servers_ip
SSH 프로토콜 v2 활성화
/etc/ssh/sshd_config에서 "protocol 2"의 주석 처리를 제거합니다.
SSHD에서 공개 키 인증 활성화
/etc/ssh/sshd_config에서 "PubkeyAuthentication yes"의 주석 처리를 제거하십시오.
/etc/ssh/sshd_config의 StrictModes가 yes로 설정된 경우
restorecon -Rv ~/.ssh
답변3
매뉴얼에 따르면 -o password_stdin
표준 입력에서 비밀번호를 읽을 수 있는 옵션이 있는데, 이는 리디렉션일 수 있습니다. 한번도 써본적이 없어서 추측해봅니다.
즉, 본질적으로 안전하지 않은 이 솔루션을 사용하지 않는 것이 좋습니다.
ssh
개인/공개 키 시스템과 잘 작동합니다. 간단하고 안전합니다. 비밀번호를 입력하거나 쉘 스크립트에 일반 텍스트로 작성할 필요가 없습니다. 공개 키를 서버에 푸시하고 즉시 연결하세요.
답변4
명심해야 할 한 가지는 해당 -o password_stdin
옵션을 사용하면 sshfs가 알려진 호스트에 호스트에 연결할 것인지(처음 연결하고 추가되지 않은 경우) 묻기 때문에 작동하지 않는 것처럼 보일 수 있다는 것입니다. 파일). 일괄적으로 실행하면 sshfs가 묻는 것을 결코 볼 수 없습니다. 이러한 상황을 방지하기 위한 해결책은 다음과 같습니다.
-o StrictHostKeyChecking=no
sshfs에 옵션을 추가 하거나- 알려진 호스트 파일에 호스트를 추가하려면 수동으로 sshfs를 한 번 실행하세요.