首页 » IT » ssh - 安全登录

芬兰研究员Tatu Ylonen于1995年设计出最早的SSH协议,它迅速成为最流行的远程登录安全协议。

SSH命令行参数

ssh工具的基本命令形式是:ssh user@host,默认连接host的22端口。

如果指定端口,如使用ssh -p5044 user@host,表示远程机sshd绑定端口为5044。

使用ssh在远程机执行命令,如ssh user@host top,表示在host上执行top命令。

以下是ssh的详细参数。

-p
指定端口,ssh用-p指定端口,scp用-P指定端口
-i
指定私钥,在server保存此私钥对应的公钥(~/.ssh/authorized_keys)
-D
-D [bind_address:]port指定一个本地动态转发端口(如果port号小于1024则需要使用root启动ssh)。如果用-D启动ssh,则此时ssh扮演了SOCKS server的角色(支持SOCKS4/SOCKS5协议)。
-N
不执行远程命令。通常在端口转发时有用(指定-D参数时)。
-f
让ssh在后台运行。
-n
将stdin重定向到/dev/null(也就是禁止从stdin读)。只有在ssh运行在后台时才这么干。(通常使用-f则默认启动了-n)。

常见操作

登陆

ssh -p5044 berlin@192.168.16.252

指定私钥登录

ssh -p5044 -i hs-private admin@58.211.84.57

执行远程命令

ssh bailing@192.168.16.35 sar -n UDP 1

Config/配置

配置文件

/etc/ssh/sshd_config
~/.ssh/config

注意,新建~/.ssh/config文件后,修改其文件权限:

$ chmod 0600 ~/.ssh/config 

ssh登录

如果需要长期登录远程服务器,可以配置Shell别名:

$ alias dev='ssh bailing@taoqi.com -p22'
$ dev 

但更好的方式是配置~/.ssh/config,如:

$ cat ~/.ssh/config 
Host taoqi
    HostName taoqi.com
    Port 22
    User bailing

要登录taoqi.com,则只需执行命令:

$ ssh taoqi

如果事先配置了ssh自动登陆,则可以修改~/.ssh/config,通过私钥登录:

$ cat ~/.ssh/config 
Host taoqi
    HostName taoqi.com
    IdentityFile ~/.ssh/id_rsa

同样也是执行命令:

$ ssh taoqi

ssh连接重用

我们经常建立多条到一个服务器的ssh连接(更高效的方案是建立一条ssh,然后在远程服务器上用screen),为了加速连接速度,可以先开一条ssh在后台;等随后ssh到服务器时,使用之前连接建立的Socket,就能极大提高效率(省去了建立连接/用户身份认证)。

开启配置:

$ cat ~/.ssh/config 
Host *
    ControlMaster auto
    ControlPath ~/tmp/ssh-%r@%h:%p

创建连接:

$ ssh -M -N -f taoqi.com

以上命令行参数的说明:

  • -M:将ssh设置为Master模式,共享连接(之后连接该服务器的ssh,则为Slave)。
  • -N:用需要端口转发(forwarding ports)的场合。
  • -f:将ssh转移到后台。

之后可以建立ssh连接,并用netstat观察TCP连接。

检查是否存在Master连接:

$ ssh taoqi.com -O check
Master running (pid=5153)

断开Master连接:

$ ssh taoqi.com -O exit
Exit request sent.
$ ssh taoqi.com -O check
Control socket connect(/home/bailing/tmp/ssh-bailing@taoqi.com:22): No such file or directory

ssh登录断开问题

ssh登录一段时间被sshd断开,修改配置:

ClientAliveInterval

查看配置帮助

man sshd_config

scp工具

使用scp安全复制文件。

scp -P 5044 -i /root/.ssh/nat admin@221.204.231.162:/home/users/admin/ns.vmstat.txt .

其他

sshd在linux貌似使用ipv6,用netstat查看监听地址与其他socket不同,而且ll /proc/pid-of-sshd/fd socket的inode号在/proc/net/tcp6中才能找到。

Windows上的SSH工具

  • SecreCRT 收费。支持标签。
  • Putty - 免费。
  • Bitvise tunnelier - 免费。支持SSH(类似Putty)、SFTP(类似FileZilla)等功

参考

分享

0