需要編寫乙個定時任務指令碼向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...