ssh那些事儿(2)-实战

       在ssh那些事儿(1)中总结了一些ssh的基本原理,这一篇主要说明一下ssh的基本操作。

1、公钥认证配置

a)生成密钥。
        生成密钥命令如下:
    ssh-keygen -t rsa -f ./id_rsa -C "[email protected]" -b 2048
        其中参数-t指定密钥类型,默认是rsa,你也可以指定dsa类型。-f指定生成密钥的名称和存放路径,我这里是放在当前目录下面,-C是注释,-b是指定密钥的位数,2048位是比较安全的。生成的密钥文件名是id_rsa和id_rsa.pub。
b)配置远程机器以允许用户登录。
        登录远程机器,如果没有权限,则让其他有权限的人登录远程机器,并将上一步生成的公钥加入到$HOME/.ssh/authorized_keys目录下面。
    cat ~/.ssh/id_dsa.pub | ssh yourname@ip 'cat - >> ~/.ssh/authorized_keys'
c)配置完成后就可以用ssh命令登录了。
    ssh -p12345 yourname@ip
        如果ssh端口不是默认端口22,则需要在ssh命令中用-p参数指定,上面命令中指定的端口为12345。

2、ssh agent forwarding登录

       如ssh那些事儿(1)中提到过ssh agent forwarding原理,这里再简要描述一下。使用ssh agent从客户机登录到服务器A,然后从A登录到B,而A上面是不会存有用户私钥的,当然A和B的$HOME/.ssh/authorized_keys文件中肯定要有用户的公钥。具体过程如下:
       用户从A使用ssh命令登录到B时,服务器A的ssh客户端只是检查服务器A上面是否存在$SSH_AUTH_SOCK这个环境变量,如果存在则通过这个变量指定的domain socket通信,而这个domain socket实际上就是由A的sshd进程创建的,所以A的ssh客户端实际上是与A的sshd进程通信。但是A的sshd并没有私钥信息,所以sshd所做的事情就是转发该请求到用户的本地机器的ssh客户端,然后由本地机器的ssh客户端将请求转发给本地机器的ssh agent。本地机器的ssh agent将包含username,公钥以及签名信息的消息准备后,按照前面的路径发送回A的ssh客户端。
       从登录过程可以看到,主要是$SSH_AUTH_SOCK这个环境变量在起作用。如果登录过程中不加其他参数,这个变量是不会自动生成的,可以通过使用SSH Agent Forwarding 这篇文章中的方法来设置。最好的办法应该是在登录的时候使用-A 选项,如下所示,在登录服务器A的过程中加上-A参数,这样会在A上面自动生成$SSH_AUTH_SOCK变量,这样就可以直接从A登录到B了。
ssh yourname@ip -A






     


你可能感兴趣的:(ssh那些事儿(2)-实战)