SSH命令-【Linux】

noteId: 4EAEE69A90714E83B325B2491F7DDFF4 · 原始路径:/ALL/Linux - A模块/服务配置/SSH 远程登陆 -22端口TCP/SSH命令-【Linux】.note

Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可以在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的练级,在连接和传输数据的过程中使用双向非对称加密。

SSH最常见的用途是远程登陆系统,利用SSH可以传输命令行界面、远程执行命令和远程拷贝文件等功能。

openSSH-server 软件

openSSH是使用SSH协议实现计算机网络加密通信的软件工具。OpenSSH程序主要包含以下五个部分:

1、SSH:SSH客户端 #/etc/ssh/ssh

2、SSHd:SSH服务器 #/etc/ssh/ssh_config

3、SSH-keygen:创建用于认证的密钥

4、SSH-agent,ssh-add:密钥管理工具

5、SSH-keyscan:扫描系统公钥

通过安装 ssh 软件包的方式可以同时安装 openssh-client、openssh-server 软件包

(1)安装 SSH:

apt install -y ssh

(2)查询系统中已安装的 openssh 软件包:

dpkg -l | grep openssh

(3)查看系统中 openssh 软件包的版本:

SSH -V

SSH服务器:

SSH服务器安装后即自动运行,使用TCP协议监听 22 端口。服务的主配置文件在:/etc/ssh/sshd_config

(1):查看系统中SSH服务的运行状态:

systemctl status sshd

(2)查看SSH服务监听的网络接口及端口:

ss -ntupl | grep sshd

SSH客户端的全局配置文件是:/etc/ssh/ssh_config

客户端使用SSH密钥对远程登陆服务器:

(1)在客户端上生成密钥对:

ssh-keygen

(2)上传公钥到需要远程登陆的Linux服务器:

ssh-copy-id demo@192.168.10.1

(3)测试免密码远程登陆:

ssh demo@192.168.10.1

使用SSH远程执行命令:

ssh demo@192.168.10.1 "cat /etc/debian_version"

从linux客户端使用SSH远程传输文件:

(1)使用 scp 命令上传和下载文件:

scp text.txt demo@192.168.10.1: ~/

(2)使用 sftp 登陆远程服务器上传和下载文件:

sftp demo@192.168.10.1put [路径]get [路径]

SSH服务器端安全加固:

1、确保SSH客户端软件的安全性。建议使用系统自带的SSH客户端,如果要使用第三方软件,尽量选择开源软件,且一定要从官网下载

2、使用普通用户登陆,并且禁用 root 用户远程登陆

3、使用密钥对登陆,而不使用密码方式登陆

4、SSH服务只监听指定的IP地址和端口哦(使用大于1024的随机端口替换默认的22端口)

5、限制登陆重试的次数

6、启用网络防火墙保护SSH服务

7、使用应用防火墙(如fail2ban)防止暴力破解

可以修改SSH服务器的配置文件参数,优化SSH服务,提高安全性。常用的配置项如下:

vim /etc/ssh/sshd_configport 8778 //默认的22号端口(小于1024的被默认定义为服务端口)是最容易被攻击的对象,所以通常要改为一个大于1024的端口addressfamily inet //只监听IPv4地址,增加安全性listenaddress 192.168.122.200 //明确只监听某个IP接口(比如只监听内网的接口)protocol 2logingracetime 1m //减少最大的登陆时常,但需要合理,不能太小,否则正常请求可能登陆不上permitrootlogin no //禁用 root 用户远程登陆maxauthtries 6 //最大认证重试次数设为 6maxsessions 10 //最大会话数为 10allowusers zhangsan //只允许普通用户 zhangsan 远程登陆usedns no //不使用DNS解析主机名

如果修改了SSH服务监听的IP地址或端口,在修改生效前,要确保网络防火墙开放了新的端口的访问权限。否则有可能导致无法远程登陆服务器。如果只允许某个用户登陆,那么要确保该用户能够登陆。

查看与SSH远程登陆相关的系统日志:

(1)查看近期用户登陆情况:

last

(2)查看近期用户登陆失败的情况:

lastb

(3)查看系统内的用户近期的登陆情况:

lastlog

SSH命令参数:

-1:强制使用ssh协议版本1-2:强制使用ssh协议版本2-4:强制使用IPv4地址-6:强制使用IPv6地址-A:开启认证代理连接转发功能-a:关闭认证代理连接转发功能-b:使用本机指定地址作为对应连接的源ip地址-C:请求压缩所有数据-c:选择所加密的密码型式 (blowfish|3des 预设是3des)-e:设定跳脱字符-F:指定ssh指令的配置文件-f:后台执行ssh指令-g:允许远程主机连接主机的转发端口-i:指定身份文件(预设是在使用者的家目录 中的 .ssh/identity)-l:指定连接远程服务器登录用户名-N:不执行远程指令-n:重定向stdin 到 /dev/null-o:指定配置选项-p:指定远程服务器上的端口(默认22)-P:使用非特定的 port 去对外联机(注意这个选项会关掉 RhostsAuthentication 和 RhostsRSAAuthentication)-q:静默模式-T:禁止分配伪终端-t:强制配置 pseudo-tty-v:打印更详细信息-X:开启X11转发功能-x:关闭X11转发功能-y:开启信任X11转发功能-L listen-port:host:port 指派本地的 port 到达端机器地址上的 port建立本地SSH隧道(本地客户端建立监听端口)

将本地机(客户机)的某个端口转发到远端指定机器的指定端口.

-R listen-port:host:port 指派远程上的 port 到本地地址上的 port

建立远程SSH隧道(隧道服务端建立监听端口)

将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口.

-D port 指定一个本地机器 “动态的’’ 应用程序端口转发.