ssh(secure shell)是一种安全性协议,端口tcp22端口,是应用层协议,
与telnet的区别:
OpenSSH是linux系统的服务,随系统安装就安装,默认加入开启自启程序中。
系统的软件包
openssh-7.4p1-16.el7.x86_64
openssh-server-7.4p1-16.el7.x86_64
openssh-clients-7.4p1-16.el7.x86_64
/usr/sbin/sshd #服务端主程序
/etc/ssh/sshd_config #服务端配置文件
/etc/ssh/ssh_comfig # 客户端配置文件
rpm -ql openssh-server #查询客户端安装的软件
rpm -ql openssh-clients #查询服务端安装的软件
tail /var/log/secure #ssh的日志目录,用于排错
以下主要讲解现网当中经常使用到的参数
每启一个进程/服务,都会在var/目录下穿绳一个服务名.pid文件,这个文件记录了目前的pid号
注意事项:
在所有虚拟机操作需要关闭三个内容
systemctl stop firewalld #关闭防火墙
systemctl stop NetworkManager #关闭网络服务管理
getenforce #查看Selinux状态
setenforce 0 #关闭SElinux
其中setenforce 0 是临时关闭SElinux,永久配置方式
vim /etc/selinux/config
配置完成之后reboot重启虚拟机生效
cp -p /etc/ssh/sshd_config{
,.bak}
vim /etc/ssh/sshd_config
更改端口号,随便数字147关闭用dns做域名解析
把UseDNS设置成no,关闭用dns做域名解析;否则客户端登录连接会很慢
systemctl restart sshd #重启服务
ssh -t:检查ssh文件的语法错误
linux系统之间互相登录使用ssh命令
ssh root@服务端的ip #客户端远程登录服务端时,使用命令
ssh -p 147 [email protected](未更改端口号可以直接登录)
此处因为更改了端口号,直接登录无法登录;提示端口号问题
更改端口号,客端户远程登录的2种方式:
不给root登录,主配置文件更改为no 去掉注释#
编辑服务端配置文件 vim /etc/ssh/sshd_config
systemctl restart sshd #重启服务
客户机用root远程登录服务机时,发现可以输入密码,但是一直让你输入密码且次数时3
这里要说到配置文件内的一个参数
配置认证尝试次数MaxAuthTries,默认是6次 “MaxAuthTries 6”
但是实际输入错误3次就退出了,是因为客户端配置里有一 项参数NumberOfPasswordPrompts的默认值是3;所以我们只能尝试登3次,这里是指客户端的尝试次数,服务器的是认证次数,服务器能认证几次取决于客户端能登陆几次!
客户端的尝试次数可以通过命令更改
-o:此linux是客户端,带选项表示可以尝试登录8次,但是服务器限制客户端只有6次认证的机会,所以只有六次,最大值就是6次
SSH协议是采用了基于密钥的安全验证方式用于远程管理的,需要依靠密钥,也就是必须事先建立一 对密钥对,然后把公用密钥(锁头) (Public key)放在需要访问的目标服务器上,另外,还需要把私有密钥(钥匙) (Privatekey)放到SSH的客户端或对应的客户端服务器上。
实例1
L发送数据W给Z,需要使用Z的公钥加密W,Z用私钥打开得到W
若有一个Y发送带有病毒的Z的公钥1给Z,那么Z会使用私钥打开公钥1,就会中病毒,为了防止这种情况产生,会在L上使用私钥加上签名,为了让Z识别,Z通过签名识别是L发送的公钥,Z使用自己的私钥打开公钥W
实例二:
那么在ssh层面,虚拟机时如何加密解密的
客户端和服务端连接过程如下:
实验要求:在服务机上实现无密码的远程交互和加密远程交互
总结就2步:
1、在客户端制作公钥和私钥:
ssh-keygen #创建公钥和私钥
-t:选择密码算法,默认RSA #可不写
ssh-copy-id root@192.168.245.100 #把公钥id传到服务端root用户
ssh-copy-id -i 指定文件的路径 root@192.168.245.100 #把公钥id安装指定文件路径传给服务端root用户;一般不需要指定
authorized_keys #记录公钥文件,在服务端;目录如下
也可以看一下服务端的公钥内容,发现与客户端是一致的
cat ip_rsa_pub
known_hosts #记录建立连接的用户记录,多个客户端连接时追加的形式写入
验证登录密码,发现无须使用密码,即可实现远程交互
给客户端的私钥加密
切换到.ssh/目录下看下加密之后的私钥文件 id_rsa
这个是没有加密的私钥文件,可以看出来与加密之后还是有区别的
把公钥id传到服务端root用户
在客户端远程登录出现需要输入私钥的秘钥
这时密码校验完成登录成功
ssh包含了scp(安全复制,非交互式)和sftp协议(安全传输,交互式);s是secure,安全的意思
本机传到服务器
查询服务端已有文件
服务器传本机
scp -rp:带属性递归复制;用法和cp一样
服务端查询已有ll文件
若更改了端口号时复制
需要使用大写的P指定端口
put #上传
get #下载