Linux
使用 sshfs 的命令行中的使用者名和密碼
我正在使用以下方法創建一個小型備份腳本
sshfs
:sshfs backup_user@target_ip:/home /mnt/backup
有沒有辦法在這個命令中包含密碼?
或者是否有其他文件傳輸解決方案可以包含除 FTP/SFTP 之外的登錄密碼?
-o password_stdin
似乎並不適用於所有系統,例如 freeBSD。等等。您也可以使用
expect
解釋器,它應該與 sshfs 一起使用並且應該可以解決問題。另一個解決方案是
sshpass
,例如,假設您正在備份目錄 /var/www備份:
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 中取消註釋“協議 2”
- 在 sshd 中啟用公鑰授權
在 /etc/ssh/sshd_config 中取消註釋“PubkeyAuthentication yes”
- 如果 StrictModes 在 /etc/ssh/sshd_config 中設置為 yes,那麼
restorecon -Rv ~/.ssh
'sshfs password'
將with發送<<<
到-o password_stdin
Bash 中工作:sshfs -o password_stdin backup_user@target_ip:/home /mnt/backup <<< 'sshfs password'
請注意,密碼用單引號括起來。謝謝凱爾!