什么是SSH http://sunjsp.com
SSH的英文全称是Secure SHell,SSH协议族由IETF(Internet Engineering Task Force)的Network Working Group制定,SSH协议的内容SSH协议是建立在应用层和传输层基础上的安全协议。通过使用SSH,你可以把所有传输的数据进行加密,这样”中间人” 这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。
传统的网络服务程序,如FTP、Pop和 Telnet其本质上都是不安全的;因为它们在网络 上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正 的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。
SSH(Secure Shell)是目前比较可靠的为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。通过SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。
SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、Pop、甚至为PPP提供一个安全的”通道”。
最初SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制,现在很多人都转而使用 OpenSSH。OpenSSH是SSH的替代软件, 而且是免 费的,可以预计将来会有越来越多的人使用它而不是SSH。SSH是由客户端和服务端的软件组成的。SSH安装容易、使用简单,而且比较常见,一般的 Unix系统、Linux系统、FreeBSD系统都附带有支持SSH的应用程序包。
让Ubuntu启动SSH服务
这个不用多说了,还是apt-get install大法:
#sudo apt-get install ssh
不使用私钥的SSH还是有一定风险的。现在我们尝试在ubuntu服务器上生成私钥和公钥
#ssh-keygen
后面会提示你私钥的文件名,放在哪,这些问题,选择默认就行了,中途会让你输入密码,这个你可得记住。这样你的用户目录下会多出一个隐藏的.ssh文件夹。可以使用ls -A 来查看。里面还有两文件,一个是id_rsa(私钥),还有一个是id_rsa.pub(公钥)
这个私钥和公钥到底是什么概念?
简单说,公钥就是你的银行帐户,这个可能别人也知道,但只有手上有信用卡或是存折才能有资格去试帐户密码。所以这个信用卡和存折就是你的私钥。所以这个私钥得保存好。
也就是说,那个id_rsa文件你得保存好,可以弄到U盘上,随身带着。而id_rsa.pub得改成系统默认识别的authorized_keys并保存在.ssh文件夹下
现在服务器已经可以有两种方式的登陆了,一种就是直接用户密码识别登陆,还有一个是RSA登陆。当然,后面那个比较安全,那么我们就把服务器还有一种登陆方式给去掉。
找到etc/ssh/sshd.conf这个文件,它是负责服务器端上的设置的:
#最好把这个选项设置成“PermitRootLogin without-password”,这样“root”用户就不能从没有密匙的计算机上登录。把这个选项设置成“no”
#将禁止“root”用户登录,只能用“su”命令从普通用户转成“root”。
PermitRootLogin without-password
#把这个选项设置为“no”只允许用户用基于密匙的方式登录。
PasswordAuthentication no
利用putty 使用 RSA 登陆
辛辛苦苦弄好的钥匙,那么我们就用起来吧。这个操作是在windows平台上的。
首先打开解压putty.tgz文件。先找到“puttygen.exe”这个文件,我们要让它帮我们做个通行证。
选择“载入”,也就是载入已保存的密钥文件(私要文件),弹出的对话框里把“文件类型”换成“所有文件”然后选中我们从ubuntu服务器上生成的id_rsa文件。
接着,它会提示你输入密码,这不是你linux用户密码,而是前面生成密钥时候的密码
完成之后就会提示你保存好私钥文件,按下“保存私钥”起好名字,注意(格式为*.ppk)因为putty只识别自己做的钥匙。。。如果你只是用putty远程登陆的话,那么另外个id_rsa文件可以不要了,保管好*.ppk就行
下来就是用这把钥匙登陆了,只要在登陆前完成这步:
好了。基本上SSH连接远端linux的任务就完成了。
SSH 远程登入 Ubuntu 机
ssh username@Ubuntu’s ip (eg.192.168.0.1)
将 文件/文件夹 从远程 Ubuntu 机拷至本地(scp)
scp -r username@192.168.0.1:/home/username/remotefile.txt .
将 文件/文件夹 从本地拷至远程 Ubuntu 机(scp)
scp -r localfile.txt username@192.168.0.1:/home/username/
将 文件/文件夹 从远程 Ubuntu 机拷至本地(rsync)
rsync -v -u -a –delete –rsh=ssh –stats username@192.168.0.1:/home/username/remotefile.txt .
将 文件/文件夹 从本地拷至远程 Ubuntu 机(rsync)
rsync -v -u -a –delete –rsh=ssh –stats localfile.txt username@192.168.0.1:/home/username/
在 Windows 机上用 SSH 远程登录 Ubuntu 机
sh -X username@192.168.0.1
支持 SSH 图形界面。也就是说,gedit 打开和另存都是在服务器端操作的。nautilus 打开服务器端的文件管理器。这下就比只用命令行方便多了。不知道 windows 下的 putty 支持不
ssh -X username@192.168.0.1 ls
直接在服务器端执行 ls 返回结果到客户端
下载 PuTTY
如何在 Windows 机上拷贝 文件/文件夹 从/到 远程 Ubuntu 机
下载 FileZilla
如何限制通过SSH远程连接的用户帐号
如,假如你启用了SSH服务,那么任何有有效帐号的用户都可以远程连接。这可能会导致一些安全问题,由于有一些远程密码破解工具可以尝试常见的用户名/密码
备份SSH服务的配置文件
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.ORIGINAL
编辑配置文件
#sudo gedit /etc/ssh/sshd_config
* 将参数 PermitRootLogin 由 yes 更改为 no。 超级用户不能直接通过远程联机。
* 添加参数 AllowUsers 设定远程连接的用户名 (用空格来分割) 。
* 您也可以使用 DenyUsers for fine-grained selection of users.
* If you enable the openssh server and you have no intention for now to enable remote connections, you may add AllowUsers nosuchuserhere to disable anyone connecting.
SSH 命令
ssh 命令可以用来在远程机器上不经 shell 提示登录而执行命令。它的语法格式是: ssh hostname command。譬如,如果你想在远程主机 penguin.example.net 上执行 ls /usr/share/doc 命令,在 shell 提示下键入下面的命令:
ssh penguin.example.net ls /usr/share/doc
3.2. 使用 scp 命令
scp 命令可以用来通过安全、加密的连接在机器间传输文件。它与 rcp 相似。
把本地文件传输给远程系统的一般语法是:
scp localfile username@tohostname:/newfilename
localfile 指定源文件,username@tohostname:/newfilename 指定目标文件。
要把本地文件 shadowman 传送到你在 penguin.example.net 上的账号内,在 shell 提示下键入(把 username 替换成你的用户名):
scp shadowman username@penguin.example.net:/home/username
这会把本地文件 shadowman 传输给 penguin.example.net 上的 /home/username/shadowman 文件。
把远程文件传输给本地系统的一般语法是:
scp username@tohostname:/remotefile /newlocalfile
remotefile 指定源文件,newlocalfile 指定目标文件。
源文件可以由多个文件组成。譬如,要把目录 /downloads 的内容传输到远程机器 penguin.example.net 上现存的 uploads 目录,在 shell 提示下键入下列命令:
scp /downloads/* username@penguin.example.net:/uploads/
3.3. 使用 sftp 命令
sftp 工具可以用来打开一次安全互动的 FTP 会话。它与 ftp 相似,只不过,它使用安全、加密的连接。它的一般语法是:sftp username@hostname.com。一旦通过 验证,你可以使用一组和使用 FTP 相似的命令。请参阅 sftp 的说明书页(man)来获取这些 命令的列表。要阅读说明书页,在 shell 提示下执行 man sftp 命令。sftp 工具只在 OpenSSH 版本 2.5.0p1 以上才有。