ssh公钥及权限控制


    Mac系统本身继承于Unix,控制台可以使用常见的linux命令。本身文件结构也是一致的。

    这篇文章主要讲下SSH登陆涉及的权限控制操作。

    

    SSH公钥认证的目的是为了确认服务端确认客户机身份,以控制登录。


    大致步骤如下:

    首先,创建私有KEY及公有KEY。公有KEY放在服务机上,用来标记用户存在。用户私有KEY用来解密对应公有KEY。两个KEY非对称,用户在登录时通过导入自己的私有KEY,并配以口令passphrase来登录。


1、ssh-keygen -t rsa 

   采用默认路径,输入passphrase。 

2、scp /root/.ssh/id_rsa.pub remote:/root/.ssh/authorized_keys 

   需要输入root在远程机器的帐号密码 

3、eval `ssh-agent` 

4、ssh-add 

   输入之前输入的passphrase。 

 

说明 

1,2两步是用来生成rsa公钥/私钥对的。 

第一步产生了密钥对,id_rsa文件中是私钥,id_rsa.pub是公钥,也可以产生dsa方式的密钥对 

第二步将公钥附加到远程主机的/root/.ssh/authorized_keys文件后面。因为之前该文件是空的,所以直接scp;如果非空,则首先scp到临时文件,然后再cat。 

 

3,4两步用来预制Passphrase. 

第三步运行ssh-agent的输出(这是eval 反引号的功能),会设置两个环境变量SSH_AUTH_SOCK和SSH_AGENT_PID,这样程序可以访问后台的ssh-agent程序 

第四步设置passphrase。 

 

完成这四步,以后ssh或者scp就不会提示输入passphrase。 

如果只完成1,2两步,则会提示输入passphrase。 

如果都不作,则提示输入在远程机器的帐号密码。 

 

passphrase是用来对密钥对的私钥进行加密的,不会在网络上传播。 

 

缺点:3,4必需每次登录都执行。因为3设置环境变量,不同的登录是不同的。但对于shell,可以放在.bash_profile中执行,对于cron脚本,也可以在脚本中设置执行;4更是致命的,因为它是交互的,无法自定执行。 

 

解决:只好设置passphrase为空,这样3,4两步也就省掉了。 

 

附: 

 

ssh-agent 程序如同一个看门人,它根据需要安全地提供对安全密钥的访问。ssh-agent 启动后,它就会在后台运行,并且可以由 ssh 和 scp 程序等其他 OpenSSH 应用程序所使用。这就使得 ssh 程序可以请求一个已经解密了的密钥,而不是在每次需要时向您询问私钥的安全口令


关于我 |  联系我们 |  合作伙伴 |  用户注册 |  帮助中心 |  版权声明
正在加载中……