继续折腾!给Windows 10内置Ubuntu子系统安装SSH服务

开始之前

前文:
超详尽教程!在Windows 10内置Ubuntu子系统上搭建私有云
(续):超详尽教程!在Windows 10内置Ubuntu子系统上搭建私有云,讲解了怎样在Windows 10上开辟WSL子系统并搭建私有云盘,大家反响还不错,点击已经过千。这一篇继续给这个小系统添加功能,今天的主题是:安装SSH服务,实现远程终端连接。

给Ubuntu安装SSH服务

第一步,打开Ubuntu命令行窗口,切换到root用户,安装tasksel程序并执行:

# apt install tasksel -y
# tasksel

出现下面这个紫色的小窗口:


tasksel运行窗口

在列表底部空格键选择OpenSSH server(注意先用空格取消默认的几个选择),Tab键把光标切到OK按钮上,回车,等待自动安装结束,重新回到命令行,SSH服务器就装好了。
看着很简单,试着启动一下就出错了(囧)。

# /etc/init.d/ssh start
 * Starting OpenBSD Secure Shell server sshd
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key

不过这个难不倒人,简书上就有大神给出了解决方案,这是因为新版的opensshd 中添加了ed25519 做签名验证,而之前系统里没这个算法的证书。生成一下再次启动,这次就OK了。

# ssh-keygen -A
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519
# /etc/init.d/ssh start
 * Starting OpenBSD Secure Shell server sshd                  [ OK ]

Windows 10安装PuTTy客户端工具

PuTTy 是最有名的 SSH 和 telnet 客户端,最初由 Simon Tatham 为 Windows 平台开发。非常易于安装和使用,通常大部分的配置选项你都不需要修改。只需要输入少量基本的参数,就可以开始很简单地建立连接会话。
另找一台局域网内的电脑(下称电脑B),作为客户端远程连接装有Ubuntu的电脑(下称电脑A),在电脑B上点此下载 PuTTy最新版(0.71)。根据你的操作系统选择64位或32位版本安装即可,我选64位版本。安装之后,电脑B的开始菜单里多了这么几个东东:

PuTTy

点击Putty图标,打开PuTTy Configuration窗口,在Hostname里输入电脑A的IP地址,点击Open按钮进行试连接:
PuTTy登陆窗口

结果被踢回来了:
端口被拒绝

这才想起电脑A的22端口没打开,当然拒绝访问了。在(续):超详尽教程!在Windows 10内置Ubuntu子系统上搭建私有云一文中,我详细写了Windows 10的端口开放方法,只不过上次是开放8080端口,这次是22端口,方法完全一样,这里不再详述,只需进入电脑A的控制面板->系统和安全->Windows Defender防火墙->高级设置,点击“入站规则->新建规则”,开放22端口,重启电脑A。
再次从电脑B用PuTTy连接电脑A,这次还是被踢回来,只不过错误原因变了:
pubulickey有问题

配置SSH连接秘钥

Linux就是这样,软件安装没什么难度,但配置起来头疼事一堆。对我这样的小白非常不友好。之所以出现publickey错误,是因为新版的SSH-2默认使用秘钥认证登陆,也就是说,需要钥匙才行,密码已经落后了。
回到电脑A的Ubuntu命令行窗口,用vi打开SSH服务的配置文件:

# vi /etc/ssh/sshd_config

里面有这么一句:

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no

意思是,缺省设置禁止明文密码登陆。将这句改成:

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes

保存文件,重启ssh服务:

# /etc/init.d/ssh restart
 * Restarting OpenBSD Secure Shell server sshd                   [ OK ]

再次用PuTTy连接,这次成功了:

login as: niuyoucai
niuyoucai@localhost's password:
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.4.0-17134-Microsoft x86_64)
 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
1 package can be updated.
0 updates are security updates.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

不过,明文密码太low了吧,怎么也得试试秘钥登陆是不是?再次编辑ssh配置文件,做下面几个改动:

# vi /etc/ssh/sshd_config
PasswordAuthentication yes -> PasswordAuthentication no
#PubkeyAuthentication yes -> PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 -> AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2

保存退出,用ssh-keygen生成rsa秘钥,并设置passphrase也就是秘钥的密码,成功后出现下面信息:

#  ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:LfobOqio9U0yxq/Y8z9BBAh7XuiUD6VyveTGlOc4Ggs root@MATEBOOK-D
The key's randomart image is:
+---[RSA 2048]----+
|  .. .o.         |
|   ..* ..        |
|  o O *..        |
|   B O =..       |
|  E + O.S .      |
|   o = o..       |
|  . B.o ..       |
| o =o*.o..       |
|+ o.++=o+o       |
+----[SHA256]-----+

这样就生成了一个/root/.ssh目录,下面有两个秘钥文件:

#ls ~/.ssh
id_rsa  id_rsa.pub

id_rsa是私钥,id_rsa.pub是公钥,这俩总是成对出现。照我的粗浅理解,公钥和私钥就像钥匙和锁的关系,公钥是锁,私钥则是钥匙。下面把私钥文件拷贝到Windows目录里:

# cp ~/.ssh/id_rsa /mnt/c/temp/

重启ssh服务:

# /etc/init.d/ssh restart
 * Restarting OpenBSD Secure Shell server sshd                   [ OK ]

然后去电脑A的C:\temp目录里找到这个文件,拷贝到电脑B(客户端)的任意目录里备用。

回到电脑B,打开PuTTYgen,点击Load,选择刚刚拷贝过来的id_rsa文件,提示输入passphrase,也就是刚才生成秘钥时设定的秘钥的密码:


Load私钥

成功之后是这样:


Save private key

点击Save private key按钮,保存一个id_rsa.ppk文件,名字可以任取,但扩展必须是ppk,这个操作的目的,是将ssh server生成的私钥加工成PuTTy自己的私钥格式文件,如果原封不动地用服务器生成那个,死活登陆不上去,我在这里卡壳儿了很久,差点放弃。这个文件就是今后客户端免密登陆ssh服务器的钥匙了,一定要保存好,随身携带吧。

再次回到电脑A,在Ubuntu命令行窗口做最后的ssh服务器配置:

# cd ~/.ssh
# cp id_rsa.pub authorized_keys
# chmod 600 authorized_keys
# /etc/init.d/ssh restart

这样做的目的是将公钥文件内容放到authorized_keys文件里,因为私钥验证只认这个名字的公钥文件,最后重启ssh服务。

回到客户端电脑B,打开PuTTy,进行连接,先输入电脑A的IP:


输入IP

再点击Data设置默认登陆用户:


默认用户

然后点击SSH->Auth,点击Browse选择刚才用PuTTy生成的id_rsa.ppk私钥文件:
选择PuTTy私钥

最后别忘了回到Session,给这一套配置起个名字,点击Save保存一下,我保存成wsl,以后登陆直接双击wsl即可。


保存配置

然后点击Open,终端窗口出现了,敲入Passphrase(秘钥的密码)之后,成功以root用户身份远程登陆Ubuntu!
登陆成功!

看到那个绿色的小光标,有种相当开心的感觉。

后记

至此,我的Ubuntu子系统增加了远程客户端登陆功能。用秘钥方式访问SSH非常安全,即使别人知道你的root密码,没有钥匙,也无法登陆你的linux,这就是SSH-2抛弃密码登陆方式的原因。如果想从外网登陆电脑A的Ubuntu,只需要在路由器设置一个22端口的映射即可,详细方法在(续):超详尽教程!在Windows 10内置Ubuntu子系统上搭建私有云一文中有讲解,不再赘述。这样你在外面的时候,可以通过路由器的Wan IP登陆电脑A上的这个小小linux系统,是不是很酷呢?天气越来越热了,我也开启宅男模式,躲在家里各种折腾,越研究越有意思,生活在于折腾,文章写的辛苦,望各位多多点赞,谢了!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容

  • linux下安装SSH服务及使用详解 ssh服务介绍说明 secure shell protocol简称SSH,是...
    谦豫_ebac阅读 6,696评论 1 7
  • 第一部分:Git的基本操作 初始化操作 $ git config -global user.name #设置提交...
    庄欲以莘阅读 1,829评论 0 4
  • ssh 算是 linux 下最常用的工具之一,虽然用了很多次但对它并不是很了解,本文将查找一些资料并总结自己使用的...
    noparkinghere阅读 480评论 0 1
  • 有必要先来了解什么是SSH和什么是SSH key。 SSH Secure Shell (SSH) 是一个允许两台电...
    faner阅读 46,745评论 1 48
  • 孔玉中 铜锣一样的月亮安谧地挂在半空中,银亮的光辉点亮了将要沉睡的大地。 霍成宝和梁金花两...
    孔玉中阅读 278评论 0 2