ssh

ssh - Secure Shell

安装ssh服务

yum install openssh-server

配置文件

vim /etc/ssh/sshd_config

拒绝指定网络的用户访问

vim /etc/ssh/sshd_config
DenyUsers *@192.168.127.*

ssh客户端

安装openssh-clients

,ssh客户端需要安装该软件

yum install openssh-clients

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 db1.alv.pub

指定公钥地址或端口

或者你可以指定公钥文件所在的地址,如果你的地址是自定义的话,下面的示例我们还是用默认的地址

$ 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

公钥文件的内容里,后面一般都有当前用户名@主机名,这个其实只是一个表示,并不重要,可以删除或修改,当用户名@主机名前面的内容不能有变更,否则将失效。