IT技术博客大学习 共学习 共进步

SSH日常用法小例

昔我往矣 2014-03-20 23:03:09 浏览 4,082 次

现代社会,熟练使用ssh是一项必不可少的技能,下面是我日常使用ssh的一些小总结。
注意:测试全部是在linux系统上进行,如果你使用windows系统,可以好好研究putty和xshell的各类选项,一定会找到实现的办法!

1. 最普通登陆方法,

ssh root@192.168.1.200  
ssh  -l root 192.168.1.200

即:ssh username@hostIPorName 或 ssh -l username hostIPorName

2. 使用主机别名,简化登陆
修改~/.ssh/config文件(如没有该文件,创建之),添加如下内容:

 host server1    
 hostname 192.168.1.200
 user root

 host server2
 hostname 192.168.1.220
 user root

指定了server1是192.168.1.200的别名,使用root用户;server2是192.168.1.220的别名,root用户。所以登陆操作简化为:

ssh server1  #等价于
ssh root@192.168.1.200

ssh lhzhi@server1  # 等价于
ssh lhzhi@192.168.1.200

3. ssh公私钥认证,继续简化登陆
公私钥认证是个伟大的发明,linux上使用ssh-keygen生成密钥,然后将公钥传到ssh服务器上:

ssh-keygen -f ~/.ssh/test -P"testpw"  -t rsa    
ssh-copy-id -i ~/.ssh/test.pub server1
ssh-copy-id -i ~/.ssh/test.pub server2

第一个命令会生成一对密钥,保存在~/.ssh/目录下,test是私钥,test.pub是公钥。解开私钥的密码是上面指定的testpw,密钥的是生成算法是rsa。
后面两个命令ssh-copy-id把公钥传到server1和server2上以后,就能够登陆server1和server2,而不需要输入密码,但是有可能需要输入解开密钥对的密码,在我的ubuntu上,只是每次开机之后第一次解开密钥输入解开密钥的密码,以后再不用输入。

4. 携带认证代理登陆
现在已经把公钥上传到server1和server2,那么从server1登陆server2依然要输入server2的密码,那有什么办法可以避免这次密码输入呢?使用ssh的-A参数即可。
过程是:

   ssh -A server1                   #登陆server1
   ssh root@192.168.1.220    # 从server1免密码登陆server2

-A 参数登陆的时候会携带认证代理,具体是什么意思不清楚,我的理解是携带了私钥,导致不用输入密码。 这种办法很适合做跳板机登陆内部服务器。


6. scp传输文件
scp是最好用的数据传输办法之一,上传下载都很方便,使用ssh的22端口传递。scp比如本地有一个文本文件的目录/root/aaadir,把这个目录传到远程服务器/var目录下的方法是:

scp -rC /root/aaadir server1:/var/

参数解释:
-r 由于是传输的一个目录,所以使用-r递归传输目录下的所有文件
-C 为了加快传输速度,使用-C压缩传输
注意:如果使用scp输入密码之后报错“bash: scp: command not found”,很可能是远程服务器没有安装openssh-clients,安装之后就可以了!

7. sftp 传输文件
ftp是一个很有用的工具,但是在没有搭建ftp的环境中要使用ftp也是能办到的。sftp就是一个很好的工具,里面有类似ftp里的put和get等等很多命令,而且是基于ssh实现的!
登陆办法是:

sftp server2

然后像使用ftp一样可以进行上传,删除,下载等操作了。十分简单吧!!!

8.杂记
还有一些小问题值得注意,如果登陆过程发现速度忙或者等问题,可以使用ssh -v 来显示详细的登陆过程信息。
为了安全,有些管理人员会修改默认ssh服务器的默认端口号,避免被扫描到,这是登陆ssh服务器就要使用-p参数指定修改过的端口号!
ssh还有很多高级的用法,但以上是我日常中常用到的,有其它需求可以查看ssh命令的man手册,里面应有尽有!

建议继续学习

  1. Linux shell脚本使用while循环执行ssh的注意事项 (阅读 8,062)
  2. 在ssh服务里使用chroot (阅读 5,841)
  3. 为什么要用公钥/私钥而不是密码去做SSH身份验证 (阅读 5,701)
  4. 如何让ssh登录更加安全 (阅读 5,602)
  5. ssh连接超时解决办法 (阅读 5,503)
  6. 懒人连ssh不输密码若干大法 (阅读 5,481)
  7. SSH无密码登录 (阅读 5,481)
  8. ssh命令 (阅读 5,223)
  9. 共享会话的ssh连接配置 (阅读 4,702)
  10. 一句话crontab实现防ssh暴力破解 (阅读 4,564)