SSH使用指南

SSH使用指南

目录

  • 简介
  • 历史
  • 入门
  • 进阶
  • 原理
  • 参考

简介

SSH(Secure Shell)是一种用于在不安全网络中进行操作网络服务的加密网络协议,提供两台电脑不安全网络间进行认证和加密数据传输。主要用于网络管理员进行远程管理使用,允许用户远程登录、远程执行命令和拷贝文件。

历史

Version 1.x

1995, 芬兰赫尔辛基科技大学的一个研究员Tatu Ylönen设计了第一版的协议(称为SSH-1),并发布了一版免费的软件。

  • 启发:校园网络受到密码嗅探攻击。
  • 目的:代替早期没有提供强认证和保密性的rlogin,Telnet,ftp和rsh协议。

1995的12月,Ylönen成立了一家公司SSH Communications Security来推广和开发SSH,并将后续的版本转为商业软件。

Version 2.x

SSH-2修订版在2006年确认为标准,在安全和特性上都胜过SSH-1,并和SSH-1不兼容。

Version 1.99

一个区分向下兼容的命名方法,指支持2.0和之前版本的一个协议版本。

OpenSSH和OSSH

1999年Björn Grönvall基于原始的SSH v1.2.12开源版本开发了OSSH,不久OpenBSD分叉了OSSH并创建了OpenSSH,此后OpenSSH继续维护广为移植,OSSH被淘汰。

OpenSSH 7.6版本移除了对SSH-1的支持。

入门

SSH可以在多平台下有多种应用场景,包括大部分的Unix变种(GNU/Linux,BSD包括MacOS,Solaris)和Windows。

使用场景:

  • 远程登录
  • 远程执行单个命令
  • 配置无密码登录远程机器
  • 配合rsync备份、拷贝和镜像文件
  • 端口转发或者端口隧道化
  • 实现一个成熟的VPN
  • 远程主机转发X window
  • 从支持Socks协议的SSH客户端进行安全的代理网页浏览
  • 使用SSHFS挂载远程主机的目录到本地主机文件系统
  • 自动化远程监控和管理服务器
  • 支持ssh的移动端或者嵌入式的开发

客户端

Unix和Linux系统中基本都包含ssh命令,这个命令启动SSH客户端用以在远程机器和SSH服务端建立安全的连接,通常使用的是OpenSSH SSH Client。

登录

1
ssh -p port_number remote_username@remote_host
  • -p port_number指定端口号,如果是默认22端口,可省略
  • remote_username为登录用户名
  • remote_host: 主机名,可以是域名或者IP

如果是首次连接该远程机器,则会出现以下的提示信息:

1
2
3
The authenticity of host 'example.com' cannot be established.
DSA key fingerprint is 04:48:30:31:b0:f3:5a:9b:01:9d:b3:a7:38:e2:b1:0c.
Are you sure you want to continue connecting (yes/no)?

选择yes继续后,将会添加这个服务器到你的已知主机列表中~/.ssh/known_hosts:

1
Warning: Permanently added 'example.com' (DSA) to the list of known hosts.

每台服务器都有一个key,上述的问题来确认和保存主机key,在下一次连接服务器时,会确认是否为同一台服务器。连接建立后,用户即认证成功。正常情况下,命令会要求用户输入密码。

退出

使用exit命令退出远程会话

1
exit

执行远程命令

ssh也可以用于不登录服务器直接远程执行命令

1
2
3
ssh host command

ssh host ls /opt

X11转发

1
ssh -X remote_host

服务端

启动ssh服务,服务端ssh的配置在进阶中讲解

1
2
3
4
sudo service ssh start

# 使用systemd的命令
sudo systemctl start ssh

进阶

使用SSH key登录

通过登录ssh时会使用每次输入密码的方式,不过使用SSH的key更方便和安全,配置key稍微麻烦一点,后续就是一劳永逸的事情,直接一条命令或者一个别名直接登录。

创建SSH Key

在你的客户端电脑创建ssh key:

1
ssh-keygen -t rsa

按回车确认,你的key会被创建在~/.ssh/id_rsa.pub和~/.ssh/id_rsa

切换到.ssh目录:

1
cd ~/.ssh

查看各文件的权限:

1
ls -l

输出结果如下:

1
2
3
-rw-r--r-- 1 demo demo  807 Sep  9 22:15 authorized_keys
-rw------- 1 demo demo 1679 Sep 9 23:13 id_rsa
-rw-r--r-- 1 demo demo 396 Sep 9 23:13 id_rsa.pub

id_rsa是仅文件拥有者可读,需要保持私密;id_rsa_pub可以被共享和读取。

传送公有Key到服务器

拷贝公有Key到服务器:

1
ssh-copy-id remote_host

这个命令会开启一个ssh会话,需要输入密码进行认证;输入密码成功后,将会拷贝公有Key到服务器的认证Key文件中,后续将允许不输入密码登录。

服务端SSH配置

服务端ssh配置是指配置sshd服务,默认情况,配置文件位于/etc/ssh/sshd_config

备份当前配置文件

1
sudo cp /etc/ssh/sshd_config{,.bak}

使用编辑器打开文件

1
sudo vi /etc/ssh/sshd_config

修改部分配置项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 修改端口号,默认为22,修改后客户端连接需要指定这里设置的端口
Port 22

# 设置主机的keys
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

# 设置日志级别,排错时可增加日志级别,分别为QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3
SyslogFacility AUTH
LogLevel INFO

# 设置没有登录成功时的连接等待时间
LoginGraceTime 120

# 设置是否允许root用户登录,大多数普通用户能通过sudo提高权限并支持登录的话,该项应该设为yes
PermitRootLogin yes

# 设置安全防范,配置文件不安全时禁止登录
StrictModes yes

# 设置x窗口的转发
X11Forwarding yes
X11DisplayOffset 10

重启服务

上述设置保存后,需要重启服务才能生效

1
2
3
sudo service ssh restart
# 或
sudo systemctl restart ssh

检查配置修改是否有效,在修改配置的时候尽量保证有个用户已经登录连接,帮助设置有误时进行修改。

关闭密码认证

如果你可以安装了ssh key,并且可以通过key免密登录,否则关闭密码认证后将无法登录远程服务器。

使用管理员权限打开配置文件

1
sudo vi /etc/ssh/sshd_config

修改配置文件,关闭密码认证

1
PasswordAuthentication no

有两个配置需要确认设置正确

1
2
PubkeyAuthentication yes
ChallengeResponseAuthentication no

重启服务

1
2
3
sudo service ssh restart
# 或
sudo systemctl restart ssh

此时,密码认证将不可用,你的服务器将只能通过ssh key进行登录。

原理

基本原理

SSH的工作时通过客户端程序连接到ssh服务器。

基于Key的认证工作原理

基于Key认证的方式,需要一对Key,一个私有Key和一个公有Key。
私有Key保存在客户端电脑,并且要是安全和私密的。
公有Key放置在任何你想访问的服务器上。

当你通过键对访问时,服务器会使用公有Key创建一个消息给客户端,并且只有通过私有Key才能读取;接着,客户端发送合适的响应给服务端并认证。

参考

如何找到生活的目标并高效的生活

文章来自lifehack上的how to find the purpose of life,学习后总结了下面的要点,观点和《少即是多》书中的观点类似,核心是寻找到真正的目标并设定优先级,减少不必要的干扰。

如何找到生活的目标并高效的生活

定义你真正的优先级并减少错误的目标

方法:

  • 你最关心的是什么?
  • 哪些你正在努力的错误目标?

形成一个你所期望生活的清晰愿景

写下你能想到的所期望生活相关的所有事情,并拥有可实现的信念去执行。

创建一个计划来实现你的愿景

希望不是一种策略,你需要一个计划。

使用SMART法则创建一个详细的计划,并设置一个截止日期来实现。

有效的处理遇到的困难

最重要的一点,过你自己的生活,专注于你所关心的,围绕着你的愿景构建你的生活。

你会遇到很多困难和阻力,利用策略来有效的处理这些阻力很重要,这样你才能在困难的时候还保持正确的方向。

结论

如果做到了以上几点,你的生活会发生改变。

  • 你变得更加专注,并且围绕着你自己真正的优先级来做决定。
  • 你会发现生活的目标。
  • 你会展现更多的激情和热情。
  • 你会围绕你最关心的事物构建生活,生活将会变得很满足。

电动自行车购买不完全指南

年初的时候,也就是刚过完年,准备弄个电动自行车(后续简称为电动车),方便平时的生活,主要是周末进行买菜以及附近的办事。
购买之后,使用了将近2个多月的时间,心得体会是,生活的半径确实扩大了,有一些地铁和公交不方便达到的地方,有时候想去也会去看看了。虽然电动车的行程没有汽车的覆盖范围广,但是两者的功能职责是不同的,汽车的购买也在计划中了。

这里就列举下购买电动车的一些心得:

定位

这里的定位,主要是你想购买的电动车的用途、重量、续航。

所谓的用途,有点类似你的目标,你想要电动车做什么事。比如说上下班通勤、周末买菜、运送小件货物等等。

重量和续航,会影响到后续的使用,锂电池和铅酸电池的电动车重量不一样,另外,不同的车架重量也不一样。

续航,影响到日常的使用,通常充满电在50公里的行程比较多,也有60~80公里的行程,更多的是100公里。超长续航的比较少,代价是更重的电池和价格。

购买之前,先想清楚,购买电动车的定位,方便下一步筛选。

预算

根据第一步所想得定位,可初步筛选出相应功能的电动车品牌所对应的车型,这一步,就要确定一下购买的预算。

车架不同,价格有大概1K左右的预算,简单车架的电动车一般在2k左右,完整车架的电动车一般在3~4k左右(简单车架和完整车架为我自己创的,方便描述)

确定了预算之后,就可以进一步排除筛选的范围,直到确定想买的车型。

选车

确定了定位和预算之后,这一步就要从众多的电动车品牌中选一出一款自己喜欢的车子。每个人的诉求不同,性价比、颜值、续航、重量、品牌粉、广告代言明星粉(胡歌^_^)等等

这里罗列一下国内主要的电动车品牌,供参考:

  • 小牛
  • 雅迪
  • 绿源
  • 爱玛
  • 新日
  • 立马
  • 台铃
  • 绿佳
  • 比德文
  • 小刀
  • 小鸟

讲一下我购买前关注的比较多的品牌情况,小牛、雅迪、绿源、爱玛。

1、小牛
主要生产锂电池电动车,外形比较酷,续航很不错,稍微高端一点的车型还配有app监控服务,另外还提供保险。缺点是价格偏高,价位在4500以上依车型而定。
本来是很中意小牛的,最终没有买,一来是价格偏高,二来是担心被盗心疼。

2、雅迪
算是国内电动车的第一品牌,有铅酸电池和锂电池的电动车可供选择,续航和售后还不错,价格属于中上,配套服务没有小牛的好,目前雅迪应该是走偏高端的路线。
我最终购买了雅迪的铅酸电池的一款车,买的是60V的电池,续航还不错,在60~80公里的样子,主要是我老婆看中了车子的颜值。

3、绿源
车子的外观和雅迪相似,功能上也和雅迪相近,价格比雅迪偏低一点,也是一个不错的选择,性能上没有测试过。

4、爱玛
爱玛是从自行车出身的,因此车架上会更偏向自行车一些,走得偏低端的路线。

以上这些情况,供大家参考,实际购买的时候,需要找几家门店去看看实际的车子,包括看外观、试骑等等。

使用

说说购买电动车之后的使用情况,主要是平时周末的时候买菜和出去周边游玩。

  • 载人和物
    可以带一个人,可以带超市购买的物品完全没有问题,只是不是大件。曾经带过最大的一件物品是,从宜家拖了一个花架,大概有1.7米的高度。

  • 续航
    平时走的公里,坡度普遍不高的情况,一般充满电,可使用70公里以上。就平时周末使用,一周充一次电的频率。

  • 重量
    这里不得不吐槽,购买的铅酸电池及完整车架的电动车,重量太重了,上下楼很费劲,平时推一下挪一下都要费力。如果是在意车子重量的,建议买锂电池的车。

以上所有内容为购买过程中的心得体会,有不足的地方,欢迎提问或者讨论