SSH是指Secure Shell,SSH协议族由IETF(Internet Engineering Task Force)的Network Working Group制定,SSH协议的内容SSH协议是建立在应用层和传输层基础上的安全协议。
传 统的网络服务程序,如FTP、Pop和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人 (man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据 传给真正的服务器。
SSH(Secure Shell)是目前比较可靠的为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。通过SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。
SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、Pop、甚至为PPP提供一个安全的"通道"。
---------------------------------------------------------------------------------------
安装 SSH(Secure Shell) 服务以提供远程管理服务
sudo apt-get install ssh
---------------------------------------------------------------------------------------
先在本机上产生public key
ssh-keygen
按缺省生成就行了。如果一切正常,那么就应该生成两个文件:
id_rsa
id_rsa.pub
一个是私钥,一个是公钥,公钥文件id_rsa.pub拷贝到服务器上,然后导入需要登录的用户。
比如使用root用户登录ssh服务器,就导入/root/.ssh目录下。
cat id_rsa.pub >>authorized_keys
这样就可以不用输入密码就登录ssh
ssh root@ssh-server
假定服务器ip为61.145.34.33,ssh服务的端口号为9186,服务器上有个用户为sshuser;
用ssh登录服务器的命令为:
>ssh -l sshuser 61.145.34.33 -p 9186
回车后,假如是第一次登录,会提示你一条认证信息,你键入yes即可,接着输入服务器sshuser的密码登录即可;
用sftp登录服务器的命令为:
>sftp -oPort=9186 [email protected]
回车后,输入服务器sshuser的密码登录,然后会显示一个sftp>的环境,这个时候,键入help你会看到所有命令的帮助,跟ftp命令行工具非常类似,比如get,put等等。
---------------------------------------------------------------------------------------
SSH 远程登入 Ubuntu 机
将 文件/文件夹 从远程 Ubuntu 机拷至本地(scp)
scp -r [email protected]:/home/username/remotefile.txt .
将 文件/文件夹 从本地拷至远程 Ubuntu 机(scp)
scp -r localfile.txt [email protected]:/home/username/
将 文件/文件夹 从远程 Ubuntu 机拷至本地(rsync)
rsync -v -u -a --delete --rsh=ssh --stats [email protected]:/home/username/remotefile.txt .
将 文件/文件夹 从本地拷至远程 Ubuntu 机(rsync)
rsync -v -u -a --delete --rsh=ssh --stats localfile.txt [email protected]:/home/username/
--------------------------------------------------------------------------------------
如何限制通过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 [email protected]:/home/username
这会把本地文件 shadowman 传输给 penguin.example.net 上的 /home/username/shadowman 文件。
把远程文件传输给本地系统的一般语法是:
scp username@tohostname:/remotefile /newlocalfile
remotefile 指定源文件,newlocalfile 指定目标文件。
源文件可以由多个文件组成。譬如,要把目录 /downloads 的内容传输到远程机器 penguin.example.net 上现存的 uploads 目录,在 shell 提示下键入下列命令:
scp /downloads/* us