ssh¶
ssh - Secure Shell
安装ssh服务¶
yum install openssh-server
配置文件¶
vim /etc/ssh/sshd_config
拒绝指定网络的用户访问¶
vim /etc/ssh/sshd_config
DenyUsers *@192.168.127.*
ssh客户端¶
ssh命令参数¶
-1:强制使用ssh协议版本1; -2:强制使用ssh协议版本2; -4:强制使用IPv4地址; -6:强制使用IPv6地址; -A:开启认证代理连接转发功能; -a:关闭认证代理连接转发功能; -b:使用本机指定地址作为对应连接的源ip地址; -C:请求压缩所有数据; -F:指定ssh指令的配置文件; -f:后台执行ssh指令; -g:允许远程主机连接主机的转发端口; -i:指定身份文件; -l:指定连接远程服务器登录用户名; -N:不执行远程指令; -o:指定配置选项; -p:指定远程服务器上的端口; -q:静默模式; -X:开启X11转发功能; -x:关闭X11转发功能; -y:开启信任X11转发功能。
ssh连接示例¶
这里我们连接dc.alv.pub的ssh服务,使用默认端口
ssh dc.alv.pub
如果ssh服务端口有修改,比如修改成了662,那么这里我们使用662端口去访问ssh服务
ssh -p 662 dc.alv.pub
指定端口使用scp复制
scp -P662 dc.alv.puub:/tmp/file.txt /tmp/file.txt
ssh无密码登录设置¶
生成公钥私钥¶
ssh免密登录配置需要使用sshkey,这里我们要生成一个公钥和一个私钥, 公钥就像是锁,而私钥就是钥匙。那台服务器上有我们的锁,我们拿着要说就能登录那台服务器。
$ ssh-keygen
使用ssh-keygen 可以创建一套公钥和私钥,可以全部使用默认配置,执行该命令后全部直接回车。
指定公钥地址或端口¶
或者你可以指定公钥文件所在的地址,如果你的地址是自定义的话,下面的示例我们还是用默认的地址
$ ssh-copy-id -i .ssh/id_rsa.pub db1.alv.pub
默认是连接目标服务器的22号端口,如果你要连接的目标服务器使用的ssh端口不是22,比如是110,那么你可以使用-p 指定端口
$ ssh-copy-id -i .ssh/id_rsa.pub -p 110 db1.alv.pub
在上面的操作中,程序帮我们做的就是讲我们的公钥,写入到了目标服务器上目标用户的home目录下的.ssh/authorized_keys文件里去了。
所以,实际上,如果我们不想用ssh-copy-id这个命令去传递公钥,比如我们可以直接在目标服务器上编辑那个文件,那我们也可以直接编辑 ~/.ssh/authorized_keys 将公钥贴进去。
常见使用中,比如我们将我们的公钥放在了http服务器上, 然后目标服务器上我们执行命令curl $url >> ~/.ssh/authorized_keys 也可以达到效果, $url 就是公钥所在的http地址。
然后我们就能免密登录目标服务器了,
$ ssh db1.alv.pub
Note
公钥文件的内容里,后面一般都有当前用户名@主机名,这个其实只是一个表示,并不重要,可以删除或修改,当用户名@主机名前面的内容不能有变更,否则将失效。