SSH 的那点事
SSH
在服务器运维、计算机管理方面发挥着巨大作用,由于其安全性,在近些年基本已经完全替代了古老的的telnet
。本文稍微收集了以下ssh
的日常用法,也当作一个参考吧。
一、基本用法
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file]
[-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-p port]
[-Q cipher | cipher-auth | mac | kex | key]
[-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] [user@]hostname [command]
常用法
ssh user@host
ssh user@host -p port
ssh -i identity_file host
二、服务配置
对于sshd
服务的配置,个人偏好,一般会做这样的配置:
/etc/ssh/sshd_config
Port xxxx
Protocol 2
PermitRootLogin no
TCPKeepAlive yes
ClientAliveInterval 20
UseDNS no
一般会改掉默认的22
号端口。
三、免密登录
免密登录是常用的功能,如果服务器比较多,每次输入密码会比较麻烦,常用的情况是,干脆不设置用户密码,直接生成一个密钥加到服务端,就可以实现免密登录。基本的流程是这样:
1. 先生成key
ssh-keygen -C user@xxxhost -f ~/.ssh/xxx
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in xxx.
Your public key has been saved in xxx.pub.
The key fingerprint is:
22:f2:8d:12:45:6f:39:63:43:b2:8b:d1:d0:18:a0:82 user@xxxhost
The key's randomart image is:
+--[ RSA 2048]----+
|..o+o . |
|o .+.= . |
|E . + O |
|. + + + |
| + o . S |
| + + . |
| . o . |
| . |
| |
+-----------------+
在这里,会遇到让输入密码或者信息,直接回车即可。最终会在用户目录的~/.ssh/
目录下生成xxx
和xxx.pub
两个文件,前者是密钥,必须保存好,后者是公钥,需要放到服务器端的。如果不指定-f ~/.ssh/xxx
,会默认存储为id_rsa
和id_rsa.pub
,这里的rsa
是生成key的算法,有兴趣的话,也可以指定不同的算法。
2. 安放公钥
将xxx.pub
复制到服务端用户目录的~/.ssh/authorized_keys
文件里,这个文件必须是0600
权限的,文件中的一行代表一个客户端的公钥。
四、客户端配置
客户端连接服务器,一般需要指定服务端的域名(或IP
),端口(默认22
),用户(默认当前用户),钥匙(默认id_rsa
)。比如:
ssh user@host -p 1234 -i xxx
参数如果一多,是否会嫌麻烦?其实也很容易解决。只需要配置自己的~/.ssh/config
文件即可。需要注意的是~/.ssh/config
里文件的权限都是0600
。
~/.ssh/config
里每一组服务器信息的格式如下:
Host host
HostName host.domain.cn
Port 1234
User user
IdentityFile ~/.ssh/xxx
现在,可以简单的使用ssh host
就可以登录了,是不是很轻松?
在这里HostName
可以是IP
,也可以是域名。
五、与rsync
rsync
是一个非常优秀的数据同步软件,可以配置成使用其专有的通道,也可以走ssh
通道,如果进行了上述的服务端和客户端配置,将会非常轻松。