赞
踩
是什么,掌握原理
安装配置、调试、排错
修改配置文件==》记录配置项
日志–》排错
安全
作用:远程控制、远程管理
远程登录程序(remote login program)
ssh是安全的解释器(安全外壳协议):把里面的数据进行加密(通常我们在网络上传输数据如果不加密的话是明文传输的)
windows上是没有ssh服务的,linux上默认就会安装
默认的端口是:TCP(面向连接、传输更加可靠) 22号口
图解:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zF1KrZZa-1597925097945)(C:\Users\86155\AppData\Roaming\Typora\typora-user-images\1594606811748.png)]
telnet远程登录协议:
telnet是比较早期的远程登录协议,使用的是明文进行传输,后来被淘汰了,安全性不是很高==》默认端口为23号–》采用TCP协议
ssh能干什么?**
一个可以登录到远程的机器上执行命令的程序。
ssh是属于应用层的协议,利用ssh协议可以有效防止远程管理过程中的信息泄露问题。
ssh官方网站:
https://www.openssh.com/
linux中默认安装的ssh服务是openssh(免费的)这个软件
在linux中查看openssh软件的方法:
rpm -qa|grep openssh ==》查看软件包是否安装
远程操作的工具:
ssh:远程执行命令、远程登录
scp:远程复制传输文件
sftp:远程传输文件
xshell其实是windows里一个模拟的ssh客户端的软件
因为windows里默认没有安装ssh相关的软件,xshell就是这个软件
使用的是非对称加密技术(基于公钥加密技术)
所谓的非对称加密就是使用公钥和私钥
主要有两种方式:一、数据加密传输;二:客户端和服务器的身份验证
两种用途:
**加密的算法:**使用不同的算法会使加密更加的安全
加密算法:相当于工艺,它有着固定的流程。
密钥:密钥其实就是传递给加密算法的参数,不同的密钥加密出来的内容是不一样的。
数据加密:
发送方使用接收方的公钥进行加密数据
接收方使用自己的私钥解密数据
数字签名:==》主要用于身份识别、然后再进行数据的加密
发送方:
对原始数据执行HASH算法得到摘要值
发送方用自己私钥加密摘要值
将加密的摘要值与原始数据发送给接收方
接收方:
用发送方公钥解密摘要值,同时对收到的原始数据同样执行HASH产生另一摘要值
将解密的摘要值与产生的摘要值对比
Openssh是我们远程登录的主要软件,默认的情况下是安装的
主要的软件包是:openssh-server、openssh-clients
服务名:sshd ==》d 表示守护进程
sshd:是一个多进程的服务
服务端:
主程序:/usr/sbin/sshd
配置文件:/etc/ssh/sshd_config ==>主要学习服务器的配置文件
客户端:
主程序:/usr/bin/ssh
配置文件:/etc/ssh/ssh_config
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-izJJBfZi-1597925097981)(C:\Users\86155\AppData\Roaming\Typora\typora-user-images\1594629354517.png)]
PermitRootLogin yes :表示允许root用户登录
如果设置了不允许root用户登录,就只能够使用普通用户进行登录
用户的信息存放在/etc/passwd
用户对应的密码存放在/etc/shadow
ssh登录使用的用户名和密码是linux里的/etc/passwd和/etc/shadow
但是普通用户的权限是有限的,如何让root用户能够登录linux系统给或者普通用户有root用户的权限?
sudo==》进行授权=》普通用户执行所有命令的时候在前面都要加一个sodu
su ==》切换
**注意:远程登录需要经过ssh服务的验证,使用su切换不需要经过sshd服务的验证,**所以我们先使用普通用户进行登录再使用su-进行切换时可以登录
#
#Port 22 端口号
#AddressFamily any
#ListenAddress 0.0.0.0 监听本地所有的ipv4的IP地址
#ListenAddress :: 监听本地ipv6的IP地址
man 5 sssh_config:查看配置文件,里面有对配置文件详细的介绍
修改配置文件要重启服务才会生效:
service sshd start
systemctl ssh start
普通用户登录如何使用高权限的命令?
nc -z 192.168.0.122 ==》表示不进行数据的交互
/var/log/secure
修改ssh服务的端口
禁用root用户登录
只是允许部分用户可以登录
启用密钥认证,禁用密码认证
结合iptables限制远程登录ip地址
与zabbix结合进行监控
结合黑白名单
密码认证:
我们ssh默认使用的是密码认证,用户名存放在/etc/passwd和密码存放在/etc/shadow
密钥认证:==》更加安全
需要公钥和私钥==》需要我们自己动手去配置
know_hosts 存放接受到的别的机器的公钥==>只要我们ssh连接一次某个linux就会产生.ssh/know_hosts
know_hosts文件存放在.ssh目录里==》/root/.ssh==>ls -a 可以查看
准备:一台客户机,一台服务器
**第一步:**在客户机上root用户登录的情况下,创建密钥对
生成ecdsa类型的密钥对
[root@sanchuang ~]# ssh-keygen -t ecdsa
#默认存放的路径为/root/.ssh/id_ecdsa.pub
#生成的私钥是只有root用户才可以查看到的,公钥则是大家都可以查看
#-t :表示指定类型
在.ssh下生成了公钥和私钥,将公钥传输到服务器端
第二步:**将本地产生的公钥文件上产到需要控制的节点服务器里
注意:节点服务器最好允许root用户登录
[root@sanchuang .ssh]# ssh-copy-id -i id_ecdsa.pub root@192.168.1.141
//如果端口号改了可以-p
#上传公钥到另外一台节点服务器上,这台服务器默认的端口是22,也没有禁用root用户登录
[root@sanchuang .ssh]# ssh-copy-id -i id_ecdsa.pub root@192.168.111.132
第三步:验证免密通道是否配置成功,只要不需要输入密码,就配置成功。
验证:
ssh -p '2233' 'root@192.168.1.141'
ssh root@192.168.111.132
注意:我们公钥复制到哪个用户家目录里面,哪个用户就会生效,最好放到root目录里面,因为他的权限大
authorized_keys :存放别人上传到本机的公钥(别人给的)
known_hosts:是本机ssh过(连接别人)哪些机器,存放的是连接过的机器的公钥。(一般,我们要想连接其他的远程机器,那个机器会先给我们本机发一个公钥)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vdrumlSp-1597925097987)(C:\Users\86155\AppData\Roaming\Typora\typora-user-images\1594630850892.png)]
免密通道修建好了有什么好处?
[root@sanchuang .ssh]#ssh root@192.168.111.132 mkdir /fengdeyong
[root@sanchuang .ssh]#ssh root@192.168.111.132 yum install tree -y
scp -P 2233 monitor.sh root@192.168.1.141:/root
免密通道是信任通道,分为单项信任(A方把公钥给了B方)和双向信任(A和B两个互相给了公钥)**
scp -P2233 root@192.168.1.141:/etc/passwd
附加一篇博客:https://blog.csdn.net/Inite/article/details/106875726
scp 用户名@服务器地址:源文件 目标路径
scp 本地文件 用户名@服务器地址:目标路径
如果复制的是目录,则需要添加“-r”选项
格式:sftp 用户名@服务器地址
get 文件 ==》下载
put 文件 ==》上传
^C[root@localhost ~]# sftp -P 4455 denglanlan@192.168.0.122 denglanlan@192.168.0.122's password: Connected to 192.168.0.122. sftp> [root@localhost .ssh]# sftp denglanlan@192.168.0.122 denglanlan@192.168.0.122's password: Connected to 192.168.0.122. sftp> get -r dengkeai /lianxi Fetching /home/denglanlan/dengkeai/ to /lianxi/dengkeai Retrieving /home/denglanlan/dengkeai /home/denglanlan/dengkeai/keai sftp> put -r /lianxi dengkeai Uploading /lianxi/ to /home/denglanlan/dengkeai/lianxi Entering /lianxi/ Entering /lianxi/6_2 /lianxi/6_2/.mysql_shell.sh.swp 100% 12KB 6.5MB/s 00:00 /lianxi/6_2/mysql_shell.sh 100% 976 507.3KB/s 00:00 /lianxi/6_2/.mysql_shell.sh.swo 100% 12KB 3.6MB/s 00:00 /lianxi/6_2/py_mysql.py 100% 259 173.3KB/s 00:00 /lianxi/6_2/.py_mysql.py.swp 100% 12KB 10.5MB/s 00:00 /lianxi/6_2/.c_ommit.py.swp 100% 12KB 5.1MB/s 00:00 /lianxi/6_2/123.py 100% 2549 2.1MB/s 00:00 Entering /lianxi/6-22 /lianxi/6-22/.nginx_编译.sh.swp 100% 12KB 3.7MB/s 00:00 /lianxi/6-22/123 100% 36 23.3KB/s 00:00 Entering /lianxi/shell_file /lianxi/shell_file/one_key_install_nginx.sh 100% 1856 4.4MB/s 00:00 /lianxi/shell_file/scan_lan_port.sh 100% 914 2.8MB/s 00:00 /lianxi/shell_file/open_web_pc.txt 100% 0 0.0KB/s 00:00 /lianxi/shell_file/open_mysql_px.txt 100% 0 0.0KB/s 00:00 Entering /lianxi/ip配置 /lianxi/ip配置/show_ip.sh 100% 485 260.7KB/s 00:00 /lianxi/ip配置/show_ip.py 100% 585 694.5KB/s 00:00 Entering /lianxi/dengkeai /lianxi/dengkeai/keai
!ls表示查看本地的文件内容:
sftp> ! ls
anaconda-ks.cfg mysql-community-embedded-compat-5.7.29-1.el7.x86_64.rpm nginx-1.19.0
mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar mysql-community-embedded-devel-5.7.29-1.el7.x86_64.rpm nginx-1.19.0.tar.gz
mysql-community-client-5.7.29-1.el7.x86_64.rpm mysql-community-libs-5.7.29-1.el7.x86_64.rpm python_note
mysql-community-common-5.7.29-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.29-1.el7.x86_64.rpm source_code
mysql-community-devel-5.7.29-1.el7.x86_64.rpm mysql-community-server-5.7.29-1.el7.x86_64.rpm
mysql-community-embedded-5.7.29-1.el7.x86_64.rpm mysql-community-test-5.7.29-1.el7.x86_64.rpm
sftp> ls
dengkeai
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8XOd0VIG-1597925097995)(C:\Users\86155\AppData\Roaming\Typora\typora-user-images\1594691679082.png)]
tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。
命令格式:
tail [参数] [文件]
参数:
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
[root@localhost ~]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
在配置文件中更改了端口号,重启服务时提示错误
[root@localhost ~]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service
Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.
[root@localhost ~]# ssh denglanlan@192.168.0.122 -p 123
ssh: connect to host 192.168.0.122 port 123: Connection refused
解决办法:把selinux关掉即可
[root@localhost ~]# getenforce
Enforcing
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive
https://www.cnblogs.com/presleyren/p/12118419.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。