我正在尝试将我的 ssh 公钥从我的 Windows 客户端获取到 ubuntu 主机,但我不知道如何去做。我试图找到authorized_keys 文件,但成功率为零。ssh-copy-id 命令在 Windows 中不起作用。我在 PuTTYgen 中生成了公钥/私钥对。我在 Ubuntu 主机上使用 OpenSSH。关于做什么的任何想法?
将 SSH 公钥从 Windows 复制到 Ubuntu
关于做什么的任何想法?
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 上执行此操作
提供不带密码的默认值,只需按 Enter 即可
ssh-keygen -t rsa
如果目标 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