sshfs 명령줄의 사용자 이름 및 비밀번호

sshfs 명령줄의 사용자 이름 및 비밀번호

다음 명령을 사용하여 작은 백업 스크립트를 만들고 있습니다 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_stdinfreeBSD와 같은 모든 시스템에서 작동하지 않는 것 같습니다. 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가 묻는 것을 결코 볼 수 없습니다. 이러한 상황을 방지하기 위한 해결책은 다음과 같습니다.

  1. -o StrictHostKeyChecking=nosshfs에 옵션을 추가 하거나
  2. 알려진 호스트 파일에 호스트를 추가하려면 수동으로 sshfs를 한 번 실행하세요.

관련 정보