ubuntu安装使用ssh

SSH 是Secure Shell的缩写,是建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。关于 SSH 的更多知识,推荐图解SSH原理
Linux 上的 SSH 分为客户端openssh-client和服务端openssh-server。服务端用于提供 SSH 服务,客户端用于登录到远程SSH 服务,通常会按需安装。

1. 安装 SSH

sudo apt-get install openssh-server openssh-client

2. 开启 SSH 服务

2.1 启动 SSH 服务

查看 SSH 服务状态。

ps -e|grep ssh

输出内容中包含类似内容4493 ? 00:00:00 sshd则 SSH 服务处于运行状态,否则需要启动 SSH 服务:

sudo /etc/init.d/ssh start

2.2 配置 SSH

ssh-server的配置文件位于/etc/ssh/sshd_config。可以通过配置文件指定 SSH 服务的端口(默认22),修改端口号和禁止root登录等措施可以规避部分恶意攻击风险。更多关于sshd_config参考
修改配置后要重启 SSH 服务才能生效。

sudo vim /etc/ssh/sshd_config
sudo /etc/init.d/ssh restart

端口号配置:Port 22
禁止root登录:PermitRootLogin no
至此,已经可以使用账号密码登录到 SSH 服务了。需要注意的是,如果禁用了root登录,就需要新建linux用户或使用已有的非root用户远程登录到 SSH 服务。

2.3 远程登录 SSH

Linux系统中连接 SSH 服务的最简单方法是使用openssh-client,上文已经安装过,不再赘述。连接 SSH 服务的命令如下

ssh user@host

userhost分别是远程服务的用户名和host(可以直接是IP,也可以是已知的域名),初次连接会出现如下提示,输入yes并敲下回车键后会被断开连接。再次输入连接命令,接着输入密码连接即可。

The authenticity of host '192.168.12.30 (192.168.12.30)' can't be established.
ECDSA key fingerprint is SHA256:IPAerZeGGaXmgxhVdWBDSu61SqDF8SLjREqZli9KZ/Y.
Are you sure you want to continue connecting (yes/no)?  

3 配置秘钥登录

秘钥登录的好处是免输密码,且安全!本次示例的场景是用client服务器的userc用户,通过密钥登录到server服务器的users用户。
先明确两端的操作:

  • server端操作
    • 修改sshd_config配置文件以支持密钥登录
  • client端操作
    • 生成秘钥对:userc@client:~$ssh-keygen -t rsa
    • client的公钥上传到server,并指定users用户:userc@client:~$ssh-copy-id users@server-hostclient的公钥就被追加写入到server服务器users用户的~/.ssh/authorized_keys文件中了

3.1 server端操作

3.1.1 修改sshd_config配置文件以支持密钥登录

users@server:~$sudo vim /etc/ssh/sshd_config

找到以下两行,把前面的#删除以取消注释:

# PubkeyAuthentication yes
# AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2

PubkeyAuthentication yes:开启密钥验证
AuthorizedKeysFile:密钥存放的文件为登录用户目录下的.ssh/authorized_keys

3.2 client端操作

3.2.1 生成密钥对

ssh-keygen是用于生成秘钥的命令:

  • -t:指定生成密钥类型(rsa、dsa、ecdsa等),默认rsa
  • -P:指定passphrase,用于确保私钥的安全
  • -f:指定存放密钥的文件(公钥文件默认和私钥同目录下,不同的是,存放公钥的文件名需要加上后缀.pub)
    本文用最简单的命令生成秘钥:
userc@client:~$ssh-keygen

生成秘钥过程中有几次交互:

  • Enter file in which to save the key (/home/userc/.ssh/id_rsa): 指定保存秘钥的文件,默认/home/userc/.ssh/id_rsa
  • Enter passphrase (empty for no passphrase): 输入密码,可以为空
  • Enter same passphrase again: 确认密码
    接着会输出两行内容,告诉我们秘钥对保存的位置。
Your identification has been saved in /home/userc/.ssh/id_rsa.
Your public key has been saved in /home/userc/.ssh/id_rsa.pub.

使用ls -l .ssh/命令查看生成的秘钥文件:

总用量 8
-rw------- 1 userc userc 1823 3月  17 11:44 id_rsa
-rw-r--r-- 1 userc userc 394 3月  17 11:44 id_rsa.pub
  • id_rsa:保存私钥的文件
  • id_rsa.pub:保存公钥的文件

3.2.2 上传公钥

把公钥上传到server,并指定users用户:

userc@client:~$ssh-copy-id users@server-host
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
The authenticity of host 'server-host (server-host)' can't be established.
ECDSA key fingerprint is SHA256:***.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
users@server-host's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'users@server-host'"
and check to make sure that only the key(s) you wanted were added.

ssh-copy-id命令可以通过-p参数指定端口号。
系统提示是否确定要把密文为SHA256:***的秘钥添加到指定主机,确认后输入yes继续。接着输入users的密码,会显示上传结果Number of key(s) added: 1,然后根据提示用ssh 'users@server-host'命令进行验证。终端输出以Welcome to 开头的内容就表示登录成功了(下文演示隐藏了部分隐私信息):

userc@client:~$ssh 'users@server-host'
Welcome to Deepin 20.1 GNU/Linux

    * Homepage:https://www.deepin.org/

    * Bugreport:https://bbs.deepin.org/


Last login: Wed Mar 17 **:**:** 2021 from *.*.*.*
users@server:~$

登录成功后直接输入cat .ssh/authorized_keys命令查看server端的公钥,会发现其中包含client端生成的公钥。
此时查看client.ssh文件夹下内容,会发现多出来一个known_hosts文件。此文件的作用在图解SSH原理一文中有介绍,本文不再赘述。

4 SSH 相关的其他命令

参考Linux ssh命令详解

原文:https://www.cnblogs.com/itheo/p/14549111.html

作者:Theo·Chan
版权:本文版权归作者和博客园共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
posted @ 2021-03-17 14:18  Theo·Chan  阅读(429)  评论(0编辑  收藏  举报