赞
踩
目录
ssh:是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能(先加密在压缩)
客户端:Xshell
服务端:Openssh
执行“systemctl start sshd”命令即可启动sshd服务
sshd服务默认使用的是TCP的22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)
sshd_config 是针对服务端的配置文件
ssh_config 是针对客户端的配置文件
sshd服务使用SSH协议可以用来进行远程控制,或在计算机之间传送文件、相比较之前用Telnet方式来传输文件要安全很多,因为Telnet使用明文传输,ssh是加密传输
- sshd #服务名称
- /usr/sbin/sshd #服务端主程序
- /etc/ssh/sshd_config #服务端配置文件
- /etc/ssh/ssh_config #客户端配置文件
- Port 22 #端口
- ListenAddress ip #监听服务器的ip地址,可以写本地,也可0.0.0.0代表所有
- LoginGraceTime 2m #设定登录失败,在切断连接前服务器需等待时间,单位为秒
- PermitRootLogin yes #允许root登录
- StrictModes yes #检查ssh/文件的所有者、权限等
- MaxAuthTries 6 #用来设置最大失败尝试登录次数
- MaxSessions 10 #同一个连接最大会话
- PubkeyAuthentication yes #基于key验证
- PermitEmptyPasswords no #密码验证
- PasswordAuthentication yes #基于用户名和密码连接
- GatewayPorts no #是否允许远程主机连接本地的转发端口
- ClientAliveInterval 10 #设置以秒记得时长,超过该时间没收到客户端的数据会发送“alive”并等待回复,为0表示不发送“alive”仅对SSH-2有效
- ClientAliveCountMax 3 #在未收到客户端回应前最多允许发送多少个“alive”消息
- UseDNS yes #内网改为no ,禁用反向解析
- GSSAPIAuthentication yes #是否用户退出登录后自动销毁用户凭证缓存(仅适用于SSH-2)
- MaxStartups #最大允许保持多少个未认证的连接
ssh 远程主机用户名@远程服务器主机名或ip -p port(端口号)
当在一台linux主机上连另一台linux主机时,如当前用户是root,对面也是root登录,可以直接使用ssh ip ; 端口默认,如果端口不是默认的,需要使用 -p 指定端口。
ssh -l 远程主机用户名 远程服务器主机名或ip -p port
后面可以直接跟命令,不登录查看相关信息
[root@mmm ~]# vim /etc/ssh/sshd_config
首先确保想改的端口号未被其他进程占用
[root@mmm ~]# vim /etc/ssh/sshd_config
- AllowUsers user1 user2@ip(限制主机)
- DenyUsers user1 user2
- AllowGroups g1 g2
- DenyGroups g1 g2
- [root@yyy ~]# useradd aa
- [root@yyy ~]# echo '123'|passwd --stdin aa
- [root@yyy ~]# useradd bb
- [root@yyy ~]# echo '123' |passwd --stdin bb
- [root@yyy ~]# useradd cc
- [root@yyy ~]# echo '123' |passwd --stdin cc
1、首先在客户端生成一对密钥(ssh-keygen)
2、并将客户端的公钥ssh-copy-id 拷贝到服务端
3、当客户端再次发送一个连接请求,包括ip、用户名
4、服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应ip和用户,就会随机生成一个字符串,例如:ky
5、服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
6、得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
7、服务端接收到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录
ssh免密登入脚本
- #!/bin/bash
- #----设置ssh免密登入-----
- HOST_IP_NODE=192.168.1.1
- HOST_PASS_NODE=0000
- #安装expect软件包
- yum install -y expect
- expect << EOF
- set timeout 5
- spawn ssh-keygen -t rsa
- expect "id_rsa):"
- send "\r"
- expect "passphrase):"
- send "\r"
- expect "again:"
- send "\r"
- expect eof
- EOF
- expect << EOF
- set timeout 5
- spawn ssh-copy-id root@$HOST_IP_NODE
- expect "(yes/no)?"
- send "yes\r"
- expect "password:"
- send "$HOST_PASS_NODE\r"
- expect eof
- EOF
免密登入多台主机
- #!/bin/bash
- #----设置ssh免密登入多台主机-----
- 设置要登陆的节点ip地址
- HOST_IP_NODE=(ip1 ip2 ip3 ip4....)
- HOST_PASS_NODE=(ps1 ps2 ps3 ...)
- #安装expect软件包
- yum install -y expect
- expect << EOF
- set timeout 5
- spawn ssh-keygen -t rsa
- expect "id_rsa):"
- send "\r"
- expect "passphrase):"
- send "\r"
- expect "again:"
- send "\r"
- expect eof
- EOF
-
- copy-id(){
- expect << EOF
- set timeout 5
- spawn ssh-copy-id root@$1
- expect "(yes/no)?"
- send "yes\r"
- expect "password:"
- send "$2\r"
- expect eof
- EOF
- }
-
- #循环遍历
- num=${#HOST_IP_NODE[*]}
- fun(){
- for i in 0 1 2... $num
- do
- copy-id root@${$HOST_IP_NODE[i]} ${HOST_PASS_NODE[i]}
- done
- }
通过sftp可以利用ssh安全连接与远程主机上传、下载文件,采用与ftp类似的登录过程和交互式环境,便于目录资源管理
由于使用加密/解密技术,所以传输效率比普通的ftp要低,但安全性更高
从对面主机下载内容到本地
上传本地的内容到对面主机
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。