在shell指令碼中呼叫sftp免密碼的配置

2021-07-09 05:46:36 字數 831 閱讀 5251

需要編寫乙個定時任務指令碼向ecs上傳輸檔案,使用sftp命令時會有互動輸入密碼,可以通過下列步驟配置,執行指令碼時不用輸入密碼:

前提:本地機器:local代號a

遠端機器:阿里雲ecs代號b

b機器上的/etc/ssh/sshd_config中:

rsaauthentication yes

pubkeyauthentication yes

authorizedkeysfile.ssh/authorized_keys

確保以上配置項開啟

1、在a機器上使用者家目錄下進入.ssh目錄,沒有則建立之

執行命令:ssh-keygen -t rsa

一路回車就可以了

2、將上一步驟生成的公鑰檔案id_rsa_pub拷貝到伺服器b的使用者家目錄的.ssh目錄下,同樣,沒有該目錄,需要建立之

這時還需要輸入密碼

3、到伺服器b的使用者家目錄的.ssh目錄下,

將id_rsa_pub名稱修改為authorized_keys,將許可權修改為644

.ssh目錄許可權修改為755

家目錄許可權為755

需要確保上面三個許可權設定正確

如果有多個客戶端,依次將客戶端公鑰附加到伺服器的authorized_keys檔案內即可。

# cat /tmp/id_rsa.pub >> authorized_keys

測試sftp是否可以免密碼:

stfp test@ip

測試成功,這樣sftp,scp等命令都可以免密碼登入

shell指令碼登入sftp

sftp不能像ftp一樣直接使用賬號 密碼登入 ftp ip位址 user 賬戶 密碼 需要互動式輸入登入密碼。在shell中可以使用expect 傳入密碼。sftp rad.put bsf user bsf ip expect yes no 也可以使用 ssh keygen t rsa 生成公私鑰...

在shell指令碼中呼叫sql語句

s 靜默登入 oracle localhost shells cat shell1.sh bin bash 查詢員工資訊 sqlplus s nolog 在sqlplus的eof中,單引號中的取變數符號和外面不同 它可以取到變數值 oracle localhost shells cat shell4...

shell指令碼中呼叫其他指令碼

目前來說有三種方法 1.指令碼絕對路徑 這個方式是最普通的,底層呼叫的是fork實現,執行的時候開乙個子shell執行呼叫的指令碼,子shell執行的時候,父shell還在 子shell執行完畢後返回父shell,子shell從父shell繼承環境變數,但是子shell中的環境變數不會帶回父shel...