在windows生成SSH秘钥连接linux远程主机

前言:在windows主机中生成ssh秘钥,然后分别用远程工具与命令行去通过秘钥连接远程服务器;并实现在远程服务器中添加多个不同客户端的秘钥,以此来实现不同客户端都可以使用秘钥连接远程服务器。本次实验主机:linux(做远程服务器),(win10客户端);使用的remote terminal:xshell。

课外知识:ssh使用的是“非对称秘钥加密”方式,会生成两个秘钥,一个是私钥、一个是公钥;私钥是放在客户端中,公钥则放在远程服务器中,连接的时候只需要选择私钥然后与远程服务器中的公钥进行验证即可建立连接!

在windows命令行中生成秘钥:

ssh-keygen    

ps:1.是否保存秘钥文件在xxx路径中!

       2. 让你输入密码,一个秘钥的验证秘钥,以提高安全性!可以直接回车,表示空密码。我这里 也是使用空密码。

       3.再次确认密码。 

 ps:公钥后缀为.pub。

在远程终端 “xshell”中生成:

打开xshell——工具——新建用户秘钥生成向导——下一步——下一步——修改秘钥名称——保存为文件——完成(公钥生成完毕!)  ——选择私钥然后导出私钥——关闭。

下面图片中保存的文件为“公钥”(文件后缀为.pub):

下面图片导出的是“私钥”:

 

 将公钥上传到远程服务器:

在远程服务器(adi01)上的/root/.ssh目录创建一个普通文件:

touch  authorized_keys    # 文件名建议和我保持一致,因为sshd配置文件中的授权文件就是这个名字,这样我们就不需要修改配置文件!

将window中的公钥上传到远程服务器:

ps:这里我使用的是工具是“xftp”。

 ps:因为我已经在远程服务器中生成过ssh秘钥,所以避免文件重复修改了window公钥的名字(id_rsa_win.pub)!

将两个公钥写入到上面创建的authorizad_keys文件中:

 命令:

cat id_rsa_win.pub >>authorized_keys  #添加第一个公钥到authorized_keys中
echo -e "#" >>authorized_keys            # 不同的公钥之间要使用换行分隔,所以要追加写入一个换行符,为了方便区分我加了个“#”号。ps: 图片中的这个命令是错误的,一定要加-e才能实现换行!
 cat second.pub >>authorized_keys #添加第二个公钥到authorized_keys中

写入完成之后使用私钥连接测试:

cmd命令行:

ssh root@192.168.98.3 -i 私钥文件名   # 如下我的私钥有两把,分别是:id_rsa与second。

 

xshell:

 

 【ps:如上前面我们分别写入xshell与cmd命令行中生成公钥,最后分别使用xshell与cmd命令行中生成的私钥去连接远程服务器已经可以正常连接了。】

### 如何通过Linux使用SSH密钥认证登录到Windows服务器 为了实现从Linux客户端通过SSH密钥认证安全地连接Windows服务器,可以按照以下方法操作: #### 配置环境准备 确保目标Windows服务器已安装并启用了OpenSSH服务。可以通过PowerShell运行`Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'`来确认是否已经启用OpenSSH Server功能[^1]。 如果未启用,则可通过以下命令启用它: ```powershell Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 ``` 启动并设置开机自动启动该服务: ```powershell Start-Service sshd Set-Service -StartupType Automatic sshd ``` #### 创建SSH密钥对 在Linux生成一对新的SSH密钥(如果没有现成的)。这通常由`ssh-keygen`工具完成[^2]: ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 上述命令会提示指定保存位置以及密码保护选项,默认路径为~/.ssh/id_rsa及其对应的公钥id_rsa.pub。 #### 将公钥复制至Windows主机 有几种方式可把用户的公钥传输给远程Windows机器上的适当目录下以便后续验证过程能够顺利执行: 一种简单的方法就是直接编辑文件或者利用scp命令传送过去之后手动调整权限等属性;另一种更便捷的方式则是借助专门为此设计的小程序——比如PuTTY中的plink.exe亦或是标准Unix/Linux下的ssh-copy-id实用程序(不过后者可能需要先做些额外配置才能正常工作于跨平台场景)[^3]: 假设采用最基础的手动形式,具体步骤如下所示: 1. 登录进入目标Winodws系统; 2. 找到位于用户家目录内的.ssh文件夹(`%USERPROFILE%\.ssh`),若不存在则新建之; 3. 在此创建名为authorized_keys的新文本档并将之前产生的public key内容粘贴进去; 4. 修改相应访问控制列表ACLs使得只有owner自己能读写这些敏感资料[^4]. 最后一步非常重要因为不当的安全设定可能导致整个机制失效甚至带来安全隐患. #### 测试连接 现在应该可以从原始发起请求的地方尝试无密码身份验证建立session了: ```bash ssh username@windows_server_ip_address ``` 成功的话就不会再询问任何关于passphrase之类的东西除非当初设置了master passphrase用于加密私钥本身之外的情况发生时才会弹出来要求输入一次解码所需的短语而已. --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值