windows远程连接ubuntu-(密码登录、密钥登录、免密登录)

入坑前的必备小知识:

什么是公钥登录?

    所谓"公钥登录",就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

    来自阮一峰大大~​​传送门​

什么是authorized_keys?

     authorized_keys 是linux 操作系统下,专门用来存放公钥的地方,只要公钥放到了服务器的正确位置,并且拥有正确的权限,你才可以通过你的私钥,免密登录linux服务器

    传送门2   -张志明的个人博客​​    

    ​​传送门3 authorized-keys​

什么是SSH?

    SSH为Secure Shell的缩写,由IETF的网络小组所制定;SSH为建立在应用层基础上的安全协议,专为远程登陆绘画和其它网络服务提供安全性的协议。

    SSH提供两种级别的安全验证。

在Ubuntu上启用SSH

安装openssh-server软件包

sudo apt update   //更新可用的包列表
sudo apt install openssh-server  //安装
sudo systemctl status ssh // 查看ssh状态
sudo systemctl start ssh // 启用ssh
ip a //获取服务器ip地址
ipconfig  //Windows命令行,获取本地ip地址

报错

下列软件包有未满足的依赖关系:

openssh-server : 依赖: openssh-client (= 1:7.6p1-4ubuntu0.6)

                 依赖: openssh-sftp-server 但是它将不会被安装

                 推荐: ssh-import-id 但是它将不会被安装

E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

解决办法

sudo apt install openssh-client=1:7.6p1-4ubuntu0.6  --这是因为安装的openssh-server版本与openssh-client版本不匹配,需要将openssh-client降级

 使用密码登录:

ssh username@ip_address   首次连接时会问一些问题,直接y

可以看见上文中出现了以下内容:

The authenticity of host '192.168.150.136 (192.168.150.136)' can't be established.

ECDSA key fingerprint is SHA256:gcmwE7NXurBUKvUnfkMWldmP2j8n3dEgG3Z1JtdwJvI.

    经过查阅,这是因为远程登录Linux的时候,Linux都会检查一下当前访问的计算机公钥是否在~/.ssh/know_hosts中,这个文件是OpenSSH记录的。当下次访问相同的计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免受到DNS Hijack之类的攻击。

解决办法(不推荐):

 使用密钥登录:

  概述:先在本地生成密钥对,随后将公钥上传到Ubuntu中存储起来,再进行一系列操作。

1.在本地创建密钥对

  首先在本地计算机终端窗口中导航到.ssh目录(没有则新创建一个)

    cd Users/莫西/.ssh  生成密钥对

    ssh-keygen -t ed25519 -f moxi_ed25519 -C "moxi@moxi"

2.将本地生成的公钥上传到服务器

    scp C:/Users/莫西/.ssh/moxi_ed25519.pub moxi@192.168.150.136:.ssh

3.在ubuntu中执行:cat ~/.ssh/moxi_ed25519.pub >> ~/.ssh/authorized_keys

4.修改属性:

sudo chmod 600 authorized_keys

sudo chmod 700 ~/.ssh

5.修改Ubuntu的/etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

改成这样:::去掉前面的#

PubkeyAuthentication yes

PasswordAuthentication no

6.​重启ssh

sudo service sshd restart

7.使用密钥连接ubuntu

ssh -i ~/.ssh/moxi_ed25519 moxi@192.168.150.136

实现免密登录:

 ssh-add C:/Users/莫西/.ssh/moxi_ed25519

报错:Error connecting to agent: No such file or directory

解决办法:使用管理员身份打开PowerShell

   Set-Service ssh-agent -StartupType Manual

   Start-Service ssh-agent

 成功啦~

一些报错小经验:

 Linux命令说明:

ssh-keygen  --密钥认证

参数说明:

 scp --远程拷贝文件

参数说明:

 cat --在终端设备上显示文件内容

参数说明:

chmod命令 --改变文件或目录权限

参数说明: Linux chmod 命令 | 菜鸟教程  自己看吧哈哈哈

nano命令 --字符终端文本编辑器

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Windows上通过SSH免密登录Ubuntu,可以按照以下步骤进行操作: 1. 生成本机公钥和私钥:在Windows系统中,可以使用OpenSSH工具来生成密钥对。打开命令提示符或PowerShell,并执行以下命令: ``` ssh-keygen -t rsa ``` 这将生成一个RSA密钥对,包括公钥和私钥。默认情况下,密钥将保存在用户的主目录的.ssh文件夹中。 2. 将公钥复制到Ubuntu服务器上:将生成的公钥复制到Ubuntu服务器上,以便实现免密登录。可以使用以下命令将公钥复制到服务器: ``` ssh-copy-id user@remotehost ``` 其中,user是您在Ubuntu服务器上的用户名,remotehost是服务器的IP地址或域名。您需要输入服务器上的密码以完成复制。 3. 配置SSH:在Ubuntu服务器上,打开SSH服务器的配置文件`/etc/ssh/sshd_config`,并确保以下配置存在或处于启用状态: ``` RSAAuthentication yes PubkeyAuthentication yes ``` 如果这些配置不存在或被注释掉,请取消注释或添加它们,并保存文件。 4. 重新启动SSH服务:在Ubuntu服务器上,执行以下命令以重新启动SSH服务,以使更改生效: ``` sudo service ssh restart ``` 通过以上步骤,您应该能够在Windows上通过SSH免密登录Ubuntu服务器了。现在,您可以使用以下命令连接到服务器: ``` ssh user@remotehost ``` 其中,user是您在Ubuntu服务器上的用户名,remotehost是服务器的IP地址或域名。 请注意,如果您的Windows系统没有安装OpenSSH,您需要先下载和安装OpenSSH客户端。您可以在Microsoft的官方存储库(https://github.com/PowerShell/Win32-OpenSSH/releases)上找到OpenSSH的Windows版本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值