Skip to main content

ssh 相关内容

·247 words·2 mins
WFUing
Author
WFUing
A graduate who loves coding.
Table of Contents

安装启用 ssh
#

Secure Shell (SSH) 是用于客户端和服务端之间安全连接的网络协议。服务端和客户端之间的每次交互均被加密。

默认情况下,当你安装完Ubuntu系统后,系统是不允许通过SSH进行远程访问的,您需要安装OpenSSH并启用它。

安装方法很简单,你需要以root或者具备sudo权限的帐号按以下步骤安装并启用SSH。

  1. 打开终端安装openssh-server软件包:
sudo apt updatesudo apt install openssh-server

出现提示时,输入密码,然后按Enter继续安装。

  1. 安装完成后,SSH服务默认自动启动,你可以通过以下命令校验服务运行状态:
sudo systemctl status ssh

命令执行后,输出内容类似如下:

output ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2020-06-09 12:34:00 CEST; 9h ago ...

q 退出返回命令行提示符。

  1. Ubuntu 默认使用 ufw 防火墙配置工具,如果你启用了防火墙,请确保防火墙打开了 SSH 端口,命令如下:
sudo ufw allow ssh

至此,你可以通过SSH远程连接到你的Ubuntu系统了。Linux 和 macOS 系统默认安装了 SSH 客户端。 要从Windows计算机连接,请使用SSH客户端,例如PuTTY。

连接 ssh
#

通过网络连接到 Ubuntu 计算机,请使用以下格式调用 ssh 命令,然后输入用户名和IP地址:

ssh username@ip_address

无密码登录
#

  1. 首先我们在自己的Linux系统上生成一对SSH Key:SSH密钥和SSH公钥。密钥保存在自己的Linux系统上。
  2. 然后公钥上传到Linux服务器,之后我们就能无密码SSH登录了,SSH密钥就好比是你的身份证明。

1. 在自己的Linux系统上生成SSH密钥和公钥

打开终端,使用下面的ssh-keygen来生成RSA密钥和公钥。

-t 表示type,就是说要生成RSA加密的钥匙。

ssh-keygen -t rsa

RSA也是默认的加密类型.所以你也可以只输入ssh-keygen。默认的RSA长度是2048位。如果你非常注重安全,那么可以指定4096位的长度。

ssh-keygen -b 4096 -t rsa

生成SSH Key的过程中会要求你指定一个文件来保存密钥,按Enter键使用默认的文件就行了.然后需要输入一个密码来加密你的SSH Key。密码至少要20位长度。SSH密钥会保存在home目录下的 .ssh/id_rsa 文件中。SSH公钥保存在 .ssh/id_rsa.pub 文件中。

Generating public/private rsa key pair.
Enter file in which to save the key (/home/matrix/.ssh/id_rsa):  按Enter键
Enter passphrase (empty for no passphrase):   输入一个密码
Enter same passphrase again:   再次输入密码
Your identification has been saved in /home/matrix/.ssh/id_rsa.
Your public key has been saved in /home/matrix/.ssh/id_rsa.pub.
The key fingerprint is:
e1:dc🆎ae:b6:19:b0:19:74:d5:fe:57:3f:32:b4:d0 matrix@vivid
The key's randomart image is:
+---[RSA 4096]----+
| .. |
| . . |
| . . .. . |
| . . o o.. E .|
| o S ..o ...|
| = ..+...|
| o . . .o .|
| .o . |
| .++o |
+-----------------+

查看 .ssh/id_rsa 文件就会看到,这个文件是经过加密的(encrypted).也就是用你输入的密码来加密。

less .ssh/id_rsa

2. 将SSH公钥上传到Linux服务器

可以使用ssh-copy-id命令来完成

ssh-copy-id username@remote-server

输入远程用户的密码后,SSH 公钥就会自动上传了。SSH 公钥保存在远程 Linux 服务器的 .ssh/authorized_keys 文件中。

上传完成后,SSH 登录就不需要再次输入密码了。但是首次使用 SSH Key 登录时需要输入一次SSH密钥的加密密码。(只需要输入一次,将来会自动登录,不再需要输入密钥的密码。)

使用scp命令来传送文件时也不需要输入密码。

SSH Key的知识

Linux系统有一个钥匙环(keyring)的管理程序。钥匙环受到用户登录密码的保护。当你登录Linux系统时,会自动解开钥匙环的密码,从而可访问钥匙环.SSH密钥的密码也可存储在钥匙环。所以初次使用SSH密钥登录远程Linux服务器时需要输入一次SSH密钥的密码.而将来使用SSH密钥登录时不再输入密码。Ubuntu的钥匙环程序是seahorse。

SSH密钥就好比是你的身份证明.远程Linux服务器用你生成的SSH公钥来加密一条消息,而只有你的SSH密钥可以解开这条消息.所以其他人如果没有你的SSH密钥,是无法解开加密消息的,从而也就无法登录你的Linux服务器.

SSH无密码登录的设置就是这么简单。

禁用 ssh
#

要在您的 Ubuntu 系统上禁用SSH服务器,只需运行以下命令即可停止SSH服务:

sudo systemctl disable --now ssh

稍后,如果要重新启用它,请输入:

sudo systemctl enable --now ssh

💬评论