原文网址:http://blog.csdn.net/netwalk/article/details/12952051html
SSH是指Secure Shell,是一种安全的传输协议,Ubuntu客户端能够经过SSH访问远程服务器 。SSH的简介和工做机制可参看上篇文章 SSH简介及工做机制。ubuntu
SSH分客户端openssh-client和openssh-server安全
若是你只是想登录别的机器的SSH只须要安装openssh-client(ubuntu有默认安装,若是没有则sudoapt-get install openssh-client),若是要使本机开放SSH服务就须要安装openssh-server。服务器
Ubuntu缺省已经安装了ssh client。ssh
sudo apt-get install ssh 或者 sudo apt-get installopenssh-client工具
ssh-keygen 加密
(按回车设置默认值).net
按缺省生成id_rsa和id_rsa.pub文件,分别是私钥和公钥。rest
说明:若是sudo apt-get insall ssh出错,没法安装可以使用sudo apt-get install openssh-client进行安装。server
假定服务器ip为192.168.1.1,ssh服务的端口号为22,服务器上有个用户为root;
用ssh登陆服务器的命令为:
>ssh –p 22 root@192.168.1.1
>输入root用户的密码
Ubuntu缺省没有安装SSH Server,使用如下命令安装:
sudo apt-get install openssh-server
而后确认sshserver是否启动了:(或用“netstat -tlp”命令)
ps -e|grep ssh
若是只有ssh-agent那ssh-server尚未启动,须要/etc/init.d/ssh start,若是看到sshd那说明ssh-server已经启动了。
若是没有则能够这样启动:
sudo/etc/init.d/ssh start
事实上若是没什么特别需求,到这里 OpenSSH Server 就算安装好了。可是进一步设置一下,可让 OpenSSH 登陆时间更短,而且更加安全。这一切都是经过修改 openssh 的配置文件 sshd_config 实现的。
ssh-server配置文件位于/etc/ssh/sshd_config,在这里能够定义SSH的服务端口,默认端口是22,你能够本身定义成其余端口号,如222。而后重启SSH服务:
编辑配置文件:
找到#Port 22,去掉注释,修改为一个五位的端口:
Port 22333
找到#PermitRootLogin yes,去掉注释,修改成:
PermitRootLogin no
配置完成后重起:
中止服务:sudo /etc/init.d/ssh stop
启动服务:sudo /etc/init.d/ssh start
重启服务:sudo /etc/init.d/sshresart
断开链接:exit
登陆:sshroot@192.168.0.100
root为192.168.0.100机器上的用户,须要输入密码。
经常使用格式:ssh [-llogin_name] [-p port] [user@]hostname
更详细的能够用ssh -h查看。
举例
不指定用户:
指定用户:
若是修改过ssh登陆端口的能够:
在远程登陆的时候可能会发现,在输入完用户名后须要等很长一段时间才会提示输入密码。其实这是因为 sshd 须要反查客户端的 dns 信息致使的。能够经过禁用这个特性来大幅提升登陆的速度。首先,打开 sshd_config 文件:
找到 GSSAPI options 这一节,将下面两行注释掉:
#GSSAPIAuthentication yes #GSSAPIDelegateCredentials no而后从新启动 ssh 服务便可:
再登陆试试,应该很是快了吧
SSH 服务中,全部的内容都是加密传输的,安全性基本有保证。可是若是能使用证书认证的话,安全性将会更上一层楼,并且通过必定的设置,还能实现证书认证自动登陆的效果。
首先修改 sshd_config 文件,开启证书认证选项:
RSAAuthentication yes PubkeyAuthentication yesAuthorizedKeysFile %h/.ssh/authorized_keys修改完成后从新启动 ssh 服务。
下一步咱们须要为 SSH 用户创建私钥和公钥。首先要登陆到须要创建密钥的帐户下,这里注意退出 root 用户,须要的话用 su 命令切换到其它用户下。而后运行:
这里,咱们将生成的 key 存放在默认目录下便可。创建的过程当中会提示输入 passphrase,这至关于给证书加个密码,也是提升安全性的措施,这样即便证书不当心被人拷走也不怕了。固然若是这个留空的话,后面便可实现 PuTTy 经过证书认证的自动登陆。
ssh-keygen 命令会生成两个密钥,首先咱们须要将公钥更名留在服务器上:
而后将私钥 id_rsa 从服务器上复制出来,并删除掉服务器上的 id_rsa 文件。
服务器上的设置就作完了,下面的步骤须要在客户端电脑上来作。首先,咱们须要将 id_rsa 文件转化为 PuTTy 支持的格式。这里咱们须要利用 PuTTyGEN 这个工具:
点击 PuTTyGen 界面中的 Load 按钮,选择 id_rsa 文件,输入 passphrase(若是有的话),而后再点击 Save PrivateKey 按钮,这样 PuTTy 接受的私钥就作好了。
打开 PuTTy,在 Session 中输入服务器的 IP 地址,在 Connection->SSH->Auth 下点击 Browse 按钮,选择刚才生成好的私钥。而后回到 Connection 选项,在 Auto-login username 中输入证书所属的用户名。回到 Session 选项卡,输入个名字点 Save 保存下这个 Session。点击底部的 Open 应该就能够经过证书认证登陆到服务器了。若是有 passphrase 的话,登陆过程当中会要求输入 passphrase,不然将会直接登陆到服务器上,很是的方便。