在您的本地机器上(假设是 Linux),转到 ~/.ssh/config 并将远程服务器添加到列表中,以及您想要使用的密钥:

在您的本地机器上(假设是 Linux),转到 ~/.ssh/config 并将远程服务器添加到列表中,以及您想要使用的密钥:

需要一些有关我正在处理的 sftp 代码的帮助。我将我的公钥添加user@local_host到了remote_user@remote_server。该密钥已添加到.ssh/authorized_keys远程服务器上的 。

我原本以为当我sftp remote_user@remote_server从执行 时local_host,它不需要密码。但它仍然要求输入 的密码remote_user@remote_server

我在网上查了一下,但大多数解决方案都提到使用sshpassexpect。不幸的是,这些都没有在本地安装。

我是不是做错了什么?救命!

答案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

相关内容