昨晚搞明白了Github通信中SSH的作用,对SSH有简单的了解。今晚来研究一下SSH的使用。
(1)生成密码对
在本地执行ssh-keygen就可以生成密码对:
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hevake_lcj/.ssh/id_rsa): 若无特殊指定要求,直接ENTER就行
Enter passphrase (empty for no passphrase): 输入密码短语,随便什么都行,以ENTER结束
Enter same passphrase again: 再输一遍,别输错了,否则会提示重输。
Your identification has been saved in /home/hevake_lcj/.ssh/id_rsa.
Your public key has been saved in /home/hevake_lcj/.ssh/id_rsa.pub.
The key fingerprint is:
5c:1a:fd:43:92:25:ae:94:44:9a:11:b8:ba:cb:ce:89 hevake_lcj@CentOS-6.3-i386
The key's randomart image is:
+--[ RSA 2048]----+
| .ooo . . |
| . = + + |
| .o + * . |
| . o = + |
| . S o |
| . . |
| . |
| +.. |
|E.*. |
+-----------------+
成功了
在~/.ssh/ 目录下就会有两个文件,分别为:id_rsa, id_rsa.pub。前者为私钥文件,后者为公钥文件。
密码对生成完成!
在本地,将生成的私钥指定到ssh。也就是告SSH私钥在这个文件里:
$ ssh-add ~/.ssh/id_rsa
Identity added: /home/hevake_lcj/.ssh/id_rsa (/home/hevake_lcj/.ssh/id_rsa)
将id_rsa.pub文件中的密文追加到服务器的 ~/.ssh/authorized_keys文件中。如果没有这个文件或~/.ssh目录就创建。 ~/.ssh/authorized_keys文本文件中,每一行记录一个公钥。每个公钥密文很长,但千万不能给它换行。
chmod 644 ~/.ssh/authorized_keys
必须关闭其它帐户对该文件的改权限,否则sshd不工作。
(3)配置服务器
SSH的服务程序是sshd。SSH服务器的配置使用的是"/etc/ssh/sshd_config"配置文件,这些选项的设置在配置文件中已经有了一些说明而且用"man sshd"也可以查看帮助。
好像也不需要什么配置。由于前面修改了~/.ssh/authorized_keys文件,所以要重启一下sshd服务才生效:
$ sudo service sshd restart
停止 sshd: [确定]
正在启动 sshd: [确定]
(4)配置客户端
配置完服务器后就可以在客户端登陆了。初始登陆会弹一个什么estribute什么的,问我们是(yes/no),输入yes继续。然后就会让我们输入passphrase,如果输入正确就成功连接。可以直接按ENTER跳过,验证帐户的登陆密码:
$ ssh 172.16.252.137 -l hevake_lcj
Enter passphrase for key '/home/hevake/.ssh/id_rsa': 输入密码短语或是直接ENTER跳过
hevake_lcj@172.16.252.137's password: 输入hevake_lcj帐户的登陆密码
Last login: Wed Apr 24 21:57:40 2013 from 172.16.252.1
[hevake_lcj@CentOS-6 ~]$ 成功登陆
OpenSSH 有三种配置方式:命令行参数、用户配置文件和系统级的配置文件("/etc/ssh/ssh_config")。命令行参数优先于配置文件,用户配置文件 优先于系统配置文件。所有的命令行的参数都能在配置文件中设置。因为在安装的时候没有默认的用户配置文件,所以要把 "/etc/ssh/ssh_config"拷贝并重新命名为"~/.ssh/config"。 也可以新建这个文件,但一定要注意文件的权限,不能让其它用户有写权限。
但如果你觉得这么做比较麻烦,也可以将IP地址与帐户追加到~/.ssh/config配置文件中 :
Host host1
HostName 172.16.252.137
User hevake_lcj
Host host2
HostName 192.168.1.103
User lichunjun
我们输入命令 "ssh host1" ssh就会去~/.ssh/config文件中找到host1这个Host对象,并加载IP地址与登陆帐户。同样"ssh host2"也是一样的。
~/.ssh/config还有很多其它配置,详请执行 man ssh 可以找到相关的说明。
(5)其它
公认的登陆命令格式: ssh -i ~/.ssh/<PrivateKeyFileName> <username>@<remote IP>
ssh hevake_lcj@172.16.252.137