需要一些有关我正在处理的 sftp 代码的帮助。我将我的公钥添加user@local_host
到了remote_user@remote_server
。该密钥已添加到.ssh/authorized_keys
远程服务器上的 。
我原本以为当我sftp remote_user@remote_server
从执行 时local_host
,它不需要密码。但它仍然要求输入 的密码remote_user@remote_server
。
我在网上查了一下,但大多数解决方案都提到使用sshpass
或expect
。不幸的是,这些都没有在本地安装。
我是不是做错了什么?救命!
答案1
根据手册页,它使用与 ssh 密钥相同的信息。如果您的 ssh 私钥上没有密码,那么您可以执行以下两项操作之一:
在您的本地机器上(假设是 Linux),转到 ~/.ssh/config 并将远程服务器添加到列表中,以及您想要使用的密钥:
Host my_remote_server
HostName my_remote_server.full.address
IdentityFile "~/.ssh/my_private_key"
User my_remote_user
主机可以用作简称,也可以传递完整的服务器名称,两种方式都可以。
这会要求您在每次连接时输入服务器的完整地址,以便自动选择您的密钥。
Host my_remote_server.my.domain.com
IdentityFile "~/.ssh/my_private_key"
User my_remote_user
connect command: stfp my_remote_server.my.domain.com
这将与简称连接,而不必输入完整地址。
Host my_remote_server
HostName my_remote_server.my.domain.com
IdentityFile "~/.ssh/my_private_key"
User my_remote_user
connect command: sftp my_remote_server
这个不会嵌入用户名,但可以让您使用简称。
Host my_remote_server
HostName my_remote_server.my.domain.com
IdentityFile "~/.ssh/my_private_key"
connect command: sftp my_remote_user@my_remote_server
另一种方法是在命令行中传递私钥
sftp -i "~/.ssh/my_private_key" my_remote_user@my_remote_server.my.domain.com