我觉得我缺少一些有关 .ssh 目录在 Windows 中如何工作的基本概念。我在 OSX/Linux 上工作时没有遇到像现在这样的问题。我的最终目标只是将现有的 ssh 密钥移动到默认的 ~/.ssh 目录中,并根据我的选择更新配置(你知道,正常的 ssh 密钥相关任务)。
但是,任何时候我尝试将现有的 SSH 密钥移至 ~/.ssh 目录,或打开它,甚至创建一个配置文件,我都会收到以下错误(在 gitbash、puttygen 等中) ):
Puttygen(将密钥保存到磁盘):
Overwrite existing file C:\Users\me\.ssh?
或者在 gitbash 中(尝试做任何事情,包括创建配置文件):
touch: creating `/c/Users/me/.ssh/config': No such file or directory
cd ~/.ssh
sh.exe": cd: /c/Users/me/.ssh: Not a directory
我错过/不明白什么?
亲切的问候, u353
此答案适用于Windows环境:
一开始,Windows 没有
.ssh
文件夹。
创建像这样的 ssh 密钥文件对(ssh-keygen
现在是 Windows 10+11 附带的本机 Windows 命令):
ssh-keygen -t rsa -b 4096 -C "[email protected]"
(必须以管理员身份运行终端)。
您的
is_rsa
和 id_rsa.pub
文件将放置在 C:\Users\your_username\
下
因此,您需要创建文件夹
C:\Users\your_username\.ssh
,然后将您的ssh文件(无扩展名的私钥和以.pub
结尾的公钥)复制到那里。
您还必须创建文件
C:\Users\your_username\.ssh\config
并首次编辑它。
接下来的ssh会自动放到
.ssh
文件夹中。
注意:Linux 下的
~/
相当于 Windows 上的 C:\Users\your_username\
我在 Windows 7 上创建并定期使用“.ssh”目录;正如上面的评论中提到的,Windows 资源管理器不支持它们,或者更具体地说,Windows 资源管理器中的错误检查不允许您提供以句点开头的文件名。命令提示符或 powershell 中不存在相同的限制。
此外,如上所述,您的主目录中似乎有一个名为“.ssh”的文件,必须先将其删除,然后才能创建名为“.ssh”的文件夹。
一旦存在这样的文件夹,您就可以使用 Windows 资源管理器打开它并在其中更改/创建文件;它只是不允许您直接命名文件夹/文件“.ssh”。
Gitbash 应该直接允许您运行“rm .ssh”和“mkdir .ssh”,此时其他一切都应该可以工作。
很可能使用文件资源管理器在目录名称的开头添加
.
,也可以通过在目录名称的末尾添加 .
轻松完成。例如:
要创建名为
.ssh
的目录,只需添加名称为 .ssh.
即可创建,不会出现任何错误。
正如 @Bryson 提到的,这也可以通过 cli 完成,而无需在末尾附加
.
。
在 2018 年,鉴于您在 Windows 10 上安装了可选功能 OpenSSH 客户端,似乎在 Windows 上会在
.ssh
下为您创建一个
C:\Users\<your_username>\.ssh
文件夹
此功能允许您使用 PowerShell 通过 SSH 连接到远程主机,并且在用法上似乎与 Linux/Unix 等效功能非常相似。当我设置计算机时,它已经为我安装,但您可以阅读以下内容以了解如何验证它已安装或安装它:
您可以通过转到“设置”->“管理可选功能”来检查它是否已安装,然后检查是否在列表中看到 OpenSSH。如果是,那么您的 .ssh 文件夹可能位于您的主目录中
C:\Users\<your_username>\.ssh
。如果您需要安装它,请单击“添加功能”,找到 OpenSSH Client,单击它,然后单击安装进行安装。
在 Windows 上使用 git bash 转到主目录
$ cd
然后检查主目录上的 .ssh 文件夹使用
$ ls -A
您将能够在那里看到一个 ./ssh 文件夹
$ cd ./ssh
$ ls
您将能够看到配置文件(如果存在)
要将任何密钥对或任何文件传输到此文件夹,请使用以下命令 首先到您已经拥有密钥对的目录
$ cp name_of_key-pair_file.pem ~/.ssh/
首先,如果你想生成SSH文件,你需要做的就是运行这个命令:
ssh-keygen
完成后,.ssh文件夹将在此路径中生成:
C:\Users\your_username\
要检查 .ssh 文件夹中的文件,您可以轻松运行以下命令:
ls ~/.ssh
使用上面的命令,您可以看到所有 ssh 文件,如下所示:
id_rsa id-rsa.pub
请注意:
id_rsa:这是一个私人文件, id-rsa.pub:这是一个公共文件
所以,如果您想查看该文件的内部或任何您喜欢的内容,只需输入以下命令:
cat ~/.ssh/id_rsa.pub
为了解决这个问题,我使用了 git batsh 控制台
不支持此功能,因为 Windows 无法将点文件识别为目录。