我刚刚在我的计算机上安装了 VirtualBox 和 Vagrant,并初始化了一个 ubuntu/bento-16.04 盒子。我在 vagrant 用户旁边添加了一个新用户,并在名为 authorized_keys 的文件中生成并复制了服务器上的公钥。我还禁用了使用密码进行身份验证的可能性。
问题是,只有在 -i 标志下向 ssh 命令提供我的私钥的完整路径(位于我计算机的 C 盘上)时,我才能连接到服务器。
如果尝试连接ssh -p 2222 lucian@localhost我收到此消息: 权限被拒绝(公钥)
有什么方法可以让我通过 ssh 连接而不提供位于我的计算机上的私钥的完整路径吗?
我的印象是服务器不知道私钥的位置。
我阅读了与此问题相关的早期帖子,但我可以弄清楚我应该怎么做才能让 ssh-agent 自动向服务器提供私钥。
谢谢!
答案1
无需编辑文件,您就可以使用ssh-add yourkeyfile
,但重启后它将无法继续存在。
要将其配置为永久设置,您可以创建或编辑以下文件
nano /home/yourusername/.ssh/config
添加以下条目
Host serverIP/FQDN
IdentityFile /home/yourusername/.ssh/yourkeyfile (or other path)
现在,每次您连接到该特定主机时,它都会使用该文件。
您还可以在上面的配置中添加端口号和用户名,这样您只需输入即可ssh remotehostname
连接。
要做到这一点,请添加
User remote_username
Port remote_port#
答案2
我已经通过创建存储在本地机器上的配置文件解决了这个问题(〜/.ssh /配置)内容如下
Host myhost HostName 192.168.10.10 User username IdentityFile /path/to/identity file IdentitiesOnly yes
在哪里
myhost
是您选择与 ssh 命令一起使用以连接服务器的任何名称HostName
是 Vagrantfile 中为私有网络设置的 IP 地址user
是在服务器级别创建的新用户的名称IdentityFile
是本地存储的私钥的路径(公钥存储在服务器上的 authorized_keys 文件中)
之后我可以使用以下命令从 vagrant 连接到服务器ssh 我的主机。