sshpass連接時報錯Host key verification failed.
ssh命令登錄不能帶密碼,需要再次從命令行輸入密碼確認的。
sshpass可以帶密碼進行免確認的ssh登錄,且後面可以攜帶需要執行的命令。
密碼中有特殊符號需要用單引號引起來。
最近在使用sshpass進行scp跨機器拷貝時總是報錯:
sshpass -p ‘123#456’ scp -r -P 3577 /home/file [email protected]:/home/file
報錯信息:
Host key verification failed.
解決方法:
由於該遠程機器從未連接過,
檢查known_hosts文件:vi ~/.ssh/known_hosts ,看有沒有該IP(168.28.136.22)的信息,
如果沒有則說明沒有連接過該機器
- 需要先用ssh連接一下:ssh -p 22-o StrictHostKeyChecking=no [email protected]
$ ssh -p 22-o StrictHostKeyChecking=no [email protected]
[email protected]'s password: #輸入密碼確認
再次檢查known_hosts文件:vi ~/.ssh/known_hosts ,發現有該機器的地址sha2記錄了
$ vi ~/.ssh/known_hosts
[168.28.136.22]:22 ecdsa-sha2-nistp256 AAAssssssxyzxyzhLXNxxxxxxmlzdHAyxxxxxxAyyyyyyyyyyyeyyyyyyyyyyyyyOxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0dZpIzA=
- 然後再用sshpass 即可
sshpass -p '123#456' scp -r -P 3577 /home/file [email protected]:/home/file
~/.ssh/known_hosts 文件的作用?
ssh會把你所有訪問過的電腦的公鑰(public key)都記錄在~/.ssh/known_hosts文件。
當下次訪問相同電腦時,OpenSSH會覈對公鑰,
如果核對不上,OpenSSH會發出警告, 避免你受到DNS Hijack之類的攻擊。