ssh服务的作用
用于Linux下远程连接管理服务器的安全协议
- 服务器端(开启ssh服务):安装软件(openssh-server)
- 客户端(专门的客户端工具):
windows:SecureCRT、MobaXterm
linux:openssh-clients ssh/scp
(一)服务器端(Linux)查看是否安装软件(openssh-server)
[root@sikanolinuxServer ~]# rpm -q openssh-server
openssh-server-8.0p1-3.el8.x86_64
(二)客户机端(Linux)查看是否安装软件(openssh-clients)
[root@sikanoLinuxClients ~]# rpm -q openssh-clients
openssh-clients-8.0p1-3.el8.x86_64
(三)查看默认是否开机自启动ssh服务
[root@sikanolinuxServer ~]# systemctl list-unit-files|grep sshd.service
anaconda-sshd.service static
sshd.service enabled
(enable为开机自启,disable为开机不自启)
(四)ssh服务的重启/停止
①查看
[root@sikanolinuxServer ~]# systemctl status sshd.service
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-07-04 21:18:08 CST; 4min 29s ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 2861 (sshd)
Tasks: 1 (limit: 11336)
Memory: 1.2M
CGroup: /system.slice/sshd.service
└─2861 /usr/sbin/sshd -D -oCiphers=aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,>
②服务开/关/重启
[root@sikanolinuxServer ~]# systemctl stop sshd.service
[root@sikanolinuxServer ~]# systemctl start sshd.service
[root@sikanolinuxServer ~]# systemctl restart sshd.service
③开机服务自启开/关
[root@sikanolinuxServer ~]# systemctl enable sshd.service
[root@sikanolinuxServer ~]# systemctl list-unit-files|grep sshd.service
anaconda-sshd.service static
sshd.service enabled
[root@sikanolinuxServer ~]# systemctl disable sshd.service
Removed /etc/systemd/system/multi-user.target.wants/sshd.service.
[root@sikanolinuxServer ~]# systemctl list-unit-files|grep sshd.service
anaconda-sshd.service static
sshd.service disabled
修改ssh服务的默认端口
(一)查看ssh服务端口
netstat命令:用于查看网络连接状态
-n:不显示名称
-l:查看监听状态
-t:TCP协议
-p:查看程序名字
[root@sikanolinuxServer ~]# netstat -nltp|grep :22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2861/sshd
tcp6 0 0 :::22 :::* LISTEN 2861/sshd
[root@sikanolinuxServer ~]# lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 3108 root 4u IPv4 55446 0t0 TCP *:ssh (LISTEN)
sshd 3108 root 6u IPv6 55448 0t0 TCP *:ssh (LISTEN)
(二)修改配置文件
①查找配置文件
-l列出所有文件
-c列出配置文件
[root@sikanolinuxServer ~]# rpm -ql openssh-server
/etc/pam.d/sshd
/etc/ssh/sshd_config
/etc/sysconfig/sshd
/usr/lib/.build-id
/usr/lib/.build-id/b2
/usr/lib/.build-id/b2/06d6b45138ae71373918a5ce87f3f0dcf83bb7
/usr/lib/.build-id/bf
/usr/lib/.build-id/bf/d6fb68af8645d97d1da5954e28ab6953517e91
/usr/lib/systemd/system/sshd-keygen.target
/usr/lib/systemd/system/sshd-keygen@.service
/usr/lib/systemd/system/sshd.service
/usr/lib/systemd/system/sshd.socket
/usr/lib/systemd/system/sshd@.service
/usr/lib/tmpfiles.d/openssh.conf
/usr/lib64/fipscheck/sshd.hmac
/usr/libexec/openssh/sftp-server
/usr/libexec/openssh/sshd-keygen
/usr/sbin/sshd
/usr/share/man/man5/moduli.5.gz
/usr/share/man/man5/sshd_config.5.gz
/usr/share/man/man8/sftp-server.8.gz
/usr/share/man/man8/sshd.8.gz
/var/empty/sshd
[root@sikanolinuxServer ~]# rpm -qc openssh-server
/etc/pam.d/sshd
/etc/ssh/sshd_config
/etc/sysconfig/sshd
其中/etc/ssh/sshd_config为配置文件路径,sshd_config为所查找的配置文件(通常配置文件在man5目录下,存在sshd_config即可大概率确定该文件为所查找的配置文件)
②修改配置文件
先查看想修改的端口号是否被占用:
[root@sikanolinuxServer ~]# netstat -nltp|grep 10022
[root@sikanolinuxServer ~]# lsof -i :10022
确认无占用后修改配置文件:
vim /etc/ssh/sshd_config
在原默认port下插入自定义端口号,保存退出。
(如果一开始没有关闭防火墙和selinux这一步可能会出错)
查看端口号信息确认:
[root@sikanolinuxServer ~]# systemctl restart sshd.service
[root@sikanolinuxServer ~]# netstat -nltp|grep :10022
tcp 0 0 0.0.0.0:10022 0.0.0.0:* LISTEN 3374/sshd
tcp6 0 0 :::10022 :::* LISTEN 3374/sshd
[root@sikanolinuxServer ~]# netstat -nltp|grep :22
基于SSH服务的命令
(一) Linux下远程连接客户端工具ssh
-
客户端远程连接登录Linux服务器(ssh服务)端
ssh [选项] 用户名@远程IP
-l:指定访问用户(login)
-p:指定端口号(port) -
客户端远程访问Linux服务器执行相应的命令(未登录)
ssh [选项] 远程IP 执行相应的命令
【例】未使用指定端口号,未指定登录账号,默认为端口号22,拒绝连接
[root@sikanoLinuxClients ~]# ssh 192.168.8.100
ssh: connect to host 192.168.8.100 port 22: Connection refused
【例】使用指定端口号10022,未指定登录账号,默认登录root账号
[root@sikanoLinuxClients ~]# ssh -p 10022 192.168.8.100
root@192.168.8.100's password:
Web console: https://sikanolinuxServer:9090/ or https://192.168.8.100:9090/
This system is not registered to Red Hat Insights. See https://cloud.redhat.com/
To register this system, run: insights-client --register
Last login: Sun Jul 5 19:15:15 2020 from 192.168.8.101
[root@sikanolinuxServer ~]# exit
注销
Connection to 192.168.8.100 closed.
【例】使用指定端口号10022,指定登录账号
[root@sikanoLinuxClients ~]# ssh -p 10022 sika@192.168.8.100
sika@192.168.8.100's password:
Web console: https://sikanolinuxServer:9090/ or https://192.168.8.100:9090/
This system is not registered to Red Hat Insights. See https://cloud.redhat.com/
To register this system, run: insights-client --register
Last login: Sun Jul 5 19:17:27 2020 from 192.168.8.101
[sika@sikanolinuxServer ~]$ exit
注销
Connection to 192.168.8.100 closed.
此写法等同于
[root@sikanoLinuxClients ~]# ssh -p 10022 -l sika 192.168.8.100
【例】未登录服务器端,执行hostname命令
[root@sikanoLinuxClients ~]# ssh -p 10022 sika@192.168.8.100 hostname
sika@192.168.8.100's password:
sikanolinuxServer
[root@sikanoLinuxClients ~]#
(二)Linux下远程拷贝命令scp
用法1:将本地文件远程拷贝到远端(push)
scp [选项] 本地文件 远程服务器IP:/路径
用法2:将远程服务器上的文件拷贝到本地(pull)
scp [选项] 远程服务器IP:/文件 本地路径
注意:本地存放文件路径是否对当前拷贝文件的用户可以写
【例】
[环境准备]
服务器端清空tmp目录下所有文件,客户端家目录下创建1.txt,dir1
[root@sikanolinuxServer ~]# rm -rf /tmp/*
[root@sikanolinuxServer ~]# ll /tmp
总用量 0
[root@sikanoLinuxClients ~]# touch 1.txt
[root@sikanoLinuxClients ~]# mkdir dir1
[实验]
无设置端口号,默认为22端口,连接被拒
[root@sikanoLinuxClients ~]# scp ./1.txt 192.168.8.100:/tmp/
ssh: connect to host 192.168.8.100 port 22: Connection refused
lost connection
指定端口号拷贝文件
[root@sikanoLinuxClients ~]# scp -P 10022 ./1.txt 192.168.8.100:/tmp/
root@192.168.8.100's password:
1.txt 100% 0 0.0KB/s 00:00
确认服务器端是否拷贝成功
[root@sikanolinuxServer ~]# ll /tmp
总用量 0
-rw-r--r-- 1 root root 0 7月 5 20:17 1.txt
指定端口号拷贝目录
[root@sikanoLinuxClients ~]# scp -P 10022 ./dir1 192.168.8.100:/tmp/
root@192.168.8.100's password:
./dir1: not a regular file
-r 递归拷贝
[root@sikanoLinuxClients ~]# scp -P 10022 -r ./dir1 192.168.8.100:/tmp/
root@192.168.8.100's password:
确认服务器端是否拷贝成功
[root@sikanolinuxServer ~]# ll /tmp
总用量 0
-rw-r--r-- 1 root root 0 7月 5 20:26 1.txt
drwxr-xr-x 2 root root 6 7月 5 20:26 dir1
【例】
[环境准备]客户端新建一个backup目录
[root@sikanoLinuxClients ~]# mkdir /backup
将服务器端的/etc/passwd文件拷贝到客户端的/backup目录下,并改名为file1(要确保当前的客户端登录用户有在/backup目录下的写权限)
[root@sikanoLinuxClients ~]# scp -P10022 root@192.168.8.100:/etc/passwd /backup/file1
root@192.168.8.100's password:
passwd 100% 2507 1.7MB/s 00:00
确认客户端是否拷贝成功
[root@sikanoLinuxClients ~]# ll /backup
总用量 4
-rw-r--r-- 1 root root 2507 7月 5 20:44 file1
搭建服务总结
- 关闭防火墙和selinux(实验)可参考关闭防火墙和SELinux
- 配置软件仓库
- 软件三步曲 安装相应软件(程序) 确认软件是否成功安装 查看软件的文件列表(配置文件、程序本身、man文档手册等)
- 了解配置文件(man 5 xxx.conf)
- 根据需求通过修改配置文件完成服务的搭建
- 启动服务,开机自启动
- 测试验证