SSH(Secure SHell)使用
1. 什么是SSH?
2. SSH是如何工作的?
3. 为什么要采用第二种方法登录?
4. 本机Win 7和Virtual box虚拟机Ubuntu之间的实验
4.1 进行ssh的密码口令连接
4.2 进行ssh的密钥连接-在Win 7下制作密钥
4.2.1 使用puttygen制作密钥
4.2.2 修改ubuntu系统中openssh的配置
4.2.3 拷贝公钥信息到ubuntu的特定文件中
4.2.4 使用putty进行密钥登录
4.3 进行ssh的密钥连接-在Ubuntu下制作密钥
4.3.1 在Linux下生成密钥
4.3.2 把公钥写入authorized_keys文件中
4.3.3 生成putty私钥
4.3.4 使用putty进行密钥登录
SSH(Secure SHell)使用
1. 什么是SSH?
传统的网络服务程序,如ftp,pop和telnet在本质上是不安全的,因为它们使用明文传送口令和数据,很容易被冒充真正服务器的中间人修改通信数据,影响你的正常通信。
SSH可以对你的数据进行加密,所以可以防止”中间人”攻击,DNS和IP欺骗,还一个好处是它对传输数据进行了压缩,可以加快传输的速度。
现在一般使用的是OpenSSH 2.X,免费,而且同时支持1.x和2.x的版本。
2. SSH是如何工作的?
从客户端来看,SSH提供两种级别的安全验证:
1. 基于口令的安全验证,只要知道自己的账号和密码就可以登录远程的主机,数据也都是加密的,但不能确定的是正在连接的服务器是不是你想到登录的服务器,也有可能受到”中间人”的攻击
2. 基于密匙的安全验证,需要自己创建一对密匙,并把公用密匙放在服务器上。如果你需要连接到SSH服务器上,客户端就会向服务器端发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在服务器上找到公用密匙,再用这个密匙和你发送过来的进行比对。如果两个密匙一致,服务器就用公用密匙加密”质询”(challenge)并把它发送给客户端。客户端软件收到质询之后再用你的私人密匙进行解密再把它发给服务器。
第二种方式更安全,数据加密,但登录时间可以比较长。
3. 为什么要采用第二种方法登录?
采用密码登录的缺点:
采用密码登录的缺点:
a)用户无法设置空密码(即使系统允许空密码,也会十分危险)
b)密码容易被人偷窥或猜到
c)服务器上的一个帐户若要给多人使用,则必须让所有使用者都知道密码,
导致密码容易泄露,而且修改密码时必须通知所有人
而采用公钥可以解决以上问题:
a)公钥认证允许使用空密码,省去每次登录都需要输入密码的麻烦
b)多个使用者可以通过各自的密钥登录到系统上的同一个用户
c)即使修改了对应用户的密码,也不会影响登陆
d)若同时禁用密码认证,则只要保证私钥的安全,不会受到暴力破解的威胁
4. 本机Win 7和Virtual box虚拟机ubuntu之间的实验
4.1 进行ssh的密码口令连接
1. 需要在VB中设置连接方式由NAT改为Bridge
2. 使用”sudo apt-get install openssh-server”帮Ubuntu安装ssh服务器,
使用”sudo service ssh start”启动ssh服务
可以使用命令ps -e|grep ssh来查看是否成功启动
如果没有启动,可以使用命令sudo /etc/init.d/ssh start启动服务
3. 在Windows即主机中使用Putty登录Ubuntu,输入Ubuntu的ip地址即可,
其他默认。putty的下载地址:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
4. 输入用户名和密码就可以远程登录Ubuntu了
4.2 进行ssh的密钥连接-在Win 7下制作密钥
4.2.1 使用puttygen制作密钥
密钥包括私钥和公钥。
下载地址:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
启动puttygen,为了兼容openssh密钥,选择”SSH2 RSA”,点击Generate,
并在窗口的空白区域随意移动鼠标以获得生成密钥的随机数据,直到进度条结束为止。
完成效果为:
输入key passphrase和confirm passphrase,类似私钥密码,点击”Save private key”。
公钥信息在上面的文本框中,等下需要复制到ubuntu系统的特定文件中。
可以看到私钥的保存内容包含了公钥和私钥。
4.2.2 修改ubuntu系统中openssh的配置
修改/etc/ssh/sshd_config:
1. 需要在VB中设置连接方式由NAT改为Bridge
2. 使用”sudo apt-get install openssh-server”帮Ubuntu安装ssh服务器,
使用”sudo service ssh start”启动ssh服务
可以使用命令ps -e|grep ssh来查看是否成功启动
如果没有启动,可以使用命令sudo /etc/init.d/ssh start启动服务
3. 在Windows即主机中使用Putty登录Ubuntu,输入Ubuntu的ip地址即可,
其他默认。putty的下载地址:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
4. 输入用户名和密码就可以远程登录Ubuntu了
4.2 进行ssh的密钥连接-在Win 7下制作密钥
4.2.1 使用puttygen制作密钥
密钥包括私钥和公钥。
下载地址:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
启动puttygen,为了兼容openssh密钥,选择”SSH2 RSA”,点击Generate,
并在窗口的空白区域随意移动鼠标以获得生成密钥的随机数据,直到进度条结束为止。
完成效果为:
输入key passphrase和confirm passphrase,类似私钥密码,点击”Save private key”。
公钥信息在上面的文本框中,等下需要复制到ubuntu系统的特定文件中。
可以看到私钥的保存内容包含了公钥和私钥。
4.2.2 修改ubuntu系统中openssh的配置
修改/etc/ssh/sshd_config:
密钥包括私钥和公钥。
下载地址:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
启动puttygen,为了兼容openssh密钥,选择”SSH2 RSA”,点击Generate,
并在窗口的空白区域随意移动鼠标以获得生成密钥的随机数据,直到进度条结束为止。
完成效果为:
输入key passphrase和confirm passphrase,类似私钥密码,点击”Save private key”。
公钥信息在上面的文本框中,等下需要复制到ubuntu系统的特定文件中。
可以看到私钥的保存内容包含了公钥和私钥。
4.2.2 修改ubuntu系统中openssh的配置
修改/etc/ssh/sshd_config:
PermitRootLogin no # 禁止root用户登陆
StrictModes yes # 检查密钥的用户和权限是否正确,需要是authorized_keys文件一定为644权限,默认是打开的
RSAAuthentication yes # 启用 RSA 认证
AuthorizedKeysFile .ssh/authorized_keys # 验证公钥的存放路径
PubkeyAuthentication yes # 启用公钥认证
PasswordAuthentication no # 禁止密码认证,只能进行密钥连接,默认是打开的。
ChallengeResponseAuthentication no #关闭挑战应答方式
UsePAM no #不使用PAM认证
以上参数可以根据需要进行调整。
然后重启sshd服务:
sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh start
或者直接:
sudo /etc/init.d/ssh restart
4.2.3 拷贝公钥信息到ubuntu的特定文件中
在之前的窗口中,拷贝公钥内容,并写入~/.ssh/authroized_keys文件下
如果没有.ssh目录和authroized_keys文件,需要自己创建,并且要修改目录和文件的权限
>mkdir ~/.ssh
>chmod 700 ~/.ssh
>emacs ~/.ssh/authorized_keys
>chmod 644 ~/.ssh/authorized_keys
644权限代表别人不能对此文件进行写操作,用来保护别人不能随意把他的公钥写进去。
4.2.4 使用putty进行密钥登录
在Connection->SSH->Auth中选择私钥文件:
在Connection->Data中写入你的登录时用的用户名
也要在Session那写在ubuntu系统的IP,再点击open按钮。
这个时候,需要输入passphrase密码,也就是私钥密码。这个密码的作用是保护私钥文件,就算别人得到你的私钥文件,没有这个密码也不能进行登录。4.3 进行ssh的密钥连接-在Ubuntu下制作密钥
4.3.1 在Linux下生成密钥
在命令行下运行:
> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/compilers/.ssh/id_rsa): #输入私钥保存地址
Enter passphrase (empty for no passphrase): #输入私钥密码
Enter same passphrase again: #确认密码
Your identification has been saved in /home/compilers/.ssh/id_rsa.
Your public key has been saved in /home/compilers/.ssh/id_rsa.pub.
The key fingerprint is:
e7:f6:98:57:f0:d9:93:54:30:76:9f:10:09:c0:f8:b9 compilers@compilers-vm
The key’s randomart image is:
+–[ RSA 2048]—-+
| o….o*..|
| . . o.o+|
| . . .o|
| o . . |
| S o o.o.|
| E +o.|
| o . .|
| . +. |
| o.. |
+—————–+
4.3.2 把公钥写入authorized_keys文件中
> cd ~/.ssh
> cat id_rsa.pub >> quthorized_keys #需要换行加入新的内容
4.3.3 生成putty私钥
1. 把id_rsa传到windows系统上。
2. 使用puttygen的”Load private key”读取id_rsa文件,并输入私钥密码:
文本框里的内容应该和id_rsa.pub中的一致。点击”Save private key”保存私钥。
4.3.4 使用putty进行密钥登录
那就是和之前一样的操作:
在Connection->SSH->Auth中选择私钥文件:
在Connection->Data中写入你的登录时用的用户名
也要在Session那写在ubuntu系统的IP,再点击open按钮。
这个时候,需要输入passphrase密码,也就是私钥密码。这个密码的作用是保护私钥文件,就算别人得到你的私钥文件,没有这个密码也不能进行登录。
4.3 进行ssh的密钥连接-在Ubuntu下制作密钥
4.3.1 在Linux下生成密钥
在命令行下运行:
> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/compilers/.ssh/id_rsa): #输入私钥保存地址
Enter passphrase (empty for no passphrase): #输入私钥密码
Enter same passphrase again: #确认密码
Your identification has been saved in /home/compilers/.ssh/id_rsa.
Your public key has been saved in /home/compilers/.ssh/id_rsa.pub.
The key fingerprint is:
e7:f6:98:57:f0:d9:93:54:30:76:9f:10:09:c0:f8:b9 compilers@compilers-vm
The key’s randomart image is:
+–[ RSA 2048]—-+
| o….o*..|
| . . o.o+|
| . . .o|
| o . . |
| S o o.o.|
| E +o.|
| o . .|
| . +. |
| o.. |
+—————–+
4.3.2 把公钥写入authorized_keys文件中
> cd ~/.ssh
> cat id_rsa.pub >> quthorized_keys #需要换行加入新的内容
4.3.3 生成putty私钥
1. 把id_rsa传到windows系统上。
2. 使用puttygen的”Load private key”读取id_rsa文件,并输入私钥密码:
文本框里的内容应该和id_rsa.pub中的一致。点击”Save private key”保存私钥。
4.3.4 使用putty进行密钥登录
那就是和之前一样的操作:
在命令行下运行:
> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/compilers/.ssh/id_rsa): #输入私钥保存地址
Enter passphrase (empty for no passphrase): #输入私钥密码
Enter same passphrase again: #确认密码
Your identification has been saved in /home/compilers/.ssh/id_rsa.
Your public key has been saved in /home/compilers/.ssh/id_rsa.pub.
The key fingerprint is:
e7:f6:98:57:f0:d9:93:54:30:76:9f:10:09:c0:f8:b9 compilers@compilers-vm
The key’s randomart image is:
+–[ RSA 2048]—-+
| o….o*..|
| . . o.o+|
| . . .o|
| o . . |
| S o o.o.|
| E +o.|
| o . .|
| . +. |
| o.. |
+—————–+
4.3.2 把公钥写入authorized_keys文件中
> cd ~/.ssh
> cat id_rsa.pub >> quthorized_keys #需要换行加入新的内容
4.3.3 生成putty私钥
1. 把id_rsa传到windows系统上。
2. 使用puttygen的”Load private key”读取id_rsa文件,并输入私钥密码:
文本框里的内容应该和id_rsa.pub中的一致。点击”Save private key”保存私钥。
4.3.4 使用putty进行密钥登录
那就是和之前一样的操作:
1. 把id_rsa传到windows系统上。
2. 使用puttygen的”Load private key”读取id_rsa文件,并输入私钥密码:
文本框里的内容应该和id_rsa.pub中的一致。点击”Save private key”保存私钥。