![SFTP 密钥认证在 Bash 脚本中不起作用](https://linux22.com/image/1475424/SFTP%20%E5%AF%86%E9%92%A5%E8%AE%A4%E8%AF%81%E5%9C%A8%20Bash%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我正在尝试在 Ubuntu 上设置一个非常简单的 bash 脚本,该脚本使用公钥身份验证通过 SFTP 传输到特定服务器。当我直接在命令行上运行该命令时,它运行起来非常顺畅:
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/xxx/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
当我将相同的命令放入 bash 脚本并运行该脚本时,公钥不被接受并且进入下一步身份验证。
debug1: Offering RSA public key: /home/xxx/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: password,publickey,keyboard-interactive
我尝试运行的命令非常简单,没什么特别的:
sftp -vvv [email protected]
知道是什么原因造成的吗?
答案1
尝试使用 -oIdentityFile=/path/to/id_rsa 参数明确指定私钥文件的路径
例子 :
sftp -oBatchMode=no -oIdentityFile=/home/username/.ssh/id_rsa -b - [email protected] << !
cd /directory
put filename.txt
bye
!