很早就想总结一篇关于SSH的文章。
SSH、SSH Key、SFTP、SCP等等一直都在用,但是很少总结和体会。本着烂笔头法则,总结一下。
SSH即Secure Shell,实际上就是在应用层的网络服务上的一种加密协议。起初应用于Unix/Linux的系统上。SSH主要采用公钥-密钥模式进行验证。目前最新版本是发布于2006年的2.x。
此处以SSH协议的三个应用来展开,大家可以根据协议在这三个应用中的具体实现来体会SSH本身。
SFTP/SCP:
这两个应用都是在日常工作中非常常用的工具。其原理就是通过SSH构建一条加密隧道,进行网络传输。它们本身仍然基于SSHD进程,没有属于自己的守护进程。共用22端口。需要注意的是,由于存在加解密,其传输效率低于FTP/CP
Win平台下,有很多软件集成了SFTP,诸如FileZilla,WinSCP,Xftp。而Unix类平台下,几乎没有好用的GUI工具(存疑?)SCP就是大杀器了。配合下文中所提到的登陆验证,日常传输个config什么的都很方便。
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[[email protected]]host1:]file1 ... [[[email protected]]host2:]file2
SSH AUTHENTICATION:
自从转到macOS后,XShell这个神器就没法用了。我还专门发邮件给netsarang,但是无奈macOS的逼格之高(误)和人家的市场定位(大误)。还是只能安心用terminal了。但是真的很蛋疼啊,每次ssh [email protected]。。。特别麻烦。更甚的是我带着问题问几个macOS专业户,人家都表示,ssh就很好了呀。。。
不过最后也算找到了办法:
-首先配制一套用来登陆的SSH公钥密钥,这里不推荐全部地方都用一套密钥。
ssh-keygen -t rsa -C “[email protected]”
-得到公钥和私钥后,scp到目标服务器
scp ~/.ssh/id_rsa_auth.pub [email protected]:~/.ssh/
#在目标服务器里
cat id_rsa_auth.pub >> ~/.ssh/authorized_keys
-在本机.ssh/下新建config如下
#Host别名 Host nickname #Host IP hostname x.x.x.x #Host User user root #验证密钥 IdentityFile ~/.ssh/id_rsa_auth
-大功告成。
下次登陆的时候直接ssh nickname 你就会发现,无比爽快!
Enjoy :)
REFER:
https://www.ibm.com/developerworks/cn/aix/library/au-sshsecurity/
https://en.wikipedia.org/wiki/Secure_Shell
https://tools.ietf.org/html/draft-ietf-secsh-filexfer-13