将 SSH 公钥从 Windows 复制到 Ubuntu

信息安全 SSH 远程桌面 打开sh
2021-08-30 05:10:00

我正在尝试将我的 ssh 公钥从我的 Windows 客户端获取到 ubuntu 主机,但我不知道如何去做。我试图找到authorized_keys 文件,但成功率为零。ssh-copy-id 命令在 Windows 中不起作用。我在 PuTTYgen 中生成了公钥/私钥对。我在 Ubuntu 主机上使用 OpenSSH。关于做什么的任何想法?

4个回答

关于做什么的任何想法?

1.编辑下载cmder或使用你最喜欢的控制台模拟器。如果需要,移动您的公钥 (id_rsa.pub) 和私钥 (id_rsa) 以C:\Users\yourUserName\.ssh\创建 .ssh 文件夹。

2.通过cmder在你的windows主机上:

cp C:\Users\yourUserName\.ssh\id_rsa.pub C:\Users\yourUserName\authorized_keys

3.在您的 ubuntu 主机上:

service ssh status 必要时启动 sshd

mkdir ~/.ssh/ (如果它不存在)

4.通过cmder在你的Windows主机上:

cd C:\Users\yourUserName\

scp authorized_keys login-id@ubuntu-Host-Ip:~/.ssh

5.在您的 Ubuntu 主机上:

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

6.通过cmder在你的Windows主机上:

测试您是否可以在没有登录/密码验证的情况下通过 ssh 进入您的 ubuntu 主机。如果是:

rm C:\Users\yourUserName\authorized_keys

(您可能会在 Windows 上运行 ssh-agent 时遇到困难,如果有,请写下评论)

在您的 Windows 上执行此操作

  1. 提供不带密码的默认值,只需按 Enter 即可

     ssh-keygen -t rsa
    
  2. 如果目标 Linux 机器中没有 authorized_keys 文件,则只需将 Windows ~/.ssh/id_rsa.pub 内容复制到目标机器中的 authorized_keys 文件

     scp ~/.ssh/id_rsa.pub [linux_user]@[linux_IP/linux_hostname]:~/.ssh/authorized_keys
    

而已!!!

Windows 中缺少ssh-copy-id,但创建它很容易!

  • 打开powershell并输入:
notepad $profile
  • 您将打开现有的 Profile.ps1 文件,或者系统会提示您创建一个新文件。在记事本中粘贴以下函数:
function ssh-copy-id([string]$sshHost)
{
    cat ~/.ssh/id_rsa.pub | ssh "$sshHost" "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
}
  • 关闭记事本并保存。

  • 最后打开一个新的 powershell 窗口,ssh-copy-id将像在 linux 上一样工作。例子:

ssh-copy-id user@host

假设您的 ssh 代理正在运行,只需从 Ubuntu 运行它。

ssh-add -L >> ~/.ssh/authorized_keys