内容提要
- 基本的SSH密码登录、SCP文件复制
- SSH密钥登录,多台电脑使用相同的密钥;以及使用别名替代
user@host
的形式 - SSH登录配置文件修改,实现SSH登录加速、禁止密码登录、禁止root用户登录等。
- 遇到的问题记录
基础操作
登录与文件复制
- SSH密码登录:
ssh root@111.111.111.111 #然后根据提示输入密码即可
- SSH复制文件(已有会覆盖):
# scp from to,复制文件夹使用 scp -r # 双向的 # 比如使用服务器110.110.110.110上的root账户将本地当前目录的jpg复制到服务器的opt目录下 scp interesting.jpg root@110.110.110.110:/opt # 比如使用服务器110.110.110.110上的root账户将服务器opt目录复制到本地当前目录的files目录下 scp -r root@110.110.110.110:/opt files
登录进阶
- 使用密钥免密登录
- 多台电脑使用相同的密钥
- 使用别名代替臭长臭长的
user@host
- SSH免密登录:
无法免密登录,可尝试修改权限:ssh-keygen # 会在本机~/.ssh目录下生成密钥对 ssh-copy-id user@host # 将本地的密钥添加到服务器对应用户的可信登录列表 # 按提示输入密码 # 成功后使用对应的服务器账户,登录、复制就都不需要密码了 ssh user@host # 如果仍需要密码,一般是.ssh文件夹及其中文件的权限有问题,尝试下边的权限策略
cd ~ chmod 700 .ssh cd .ssh chmod 600 authorized_keys chmod 600 id_rsa chmod 644 id_rsa.pub
- 多台电脑使用相同的密钥
- 将通过验证的密钥文件(上一步生成的密钥对,id_rsa和id_rsa.pub)备份起来
- 需要登录服务器的机器,使用备份的文件替换掉自己
~/.ssh
目录下的对应文件 - 权限无误,即可成功登录。权限问题参考上一条。
- 使用别名替代
user@host
为了演示,这里添加两个账户:cd ~/.ssh vim config
之后就可以:Host ali # 别名 HostName 123.123.123.123 # 主机IP User root # 用户名 IdentitiesOnly yes # 只使用这里的ssh key,设置这个就不用设置下边的路径了 IdentityFile ~/.ssh/id_rsa # 设置ssh key的路径,有些人需要设置这个 Host tencent # 别名 HostName 123.123.123.124 # 主机IP User root # 用户名 IdentitiesOnly yes IdentityFile ~/.ssh/id_rsa
ssh ali # 参考上边可知,ali就相当于root@123.123.123.123 scp file ali:/opt # 可以用于文件复制
登录配置项修改
可实现:禁止密码登录(只使用密钥登录)、禁止root账户登录(也算一种安全策略)、加速SSH登陆(关掉DNS和GSSAPI查询)
- 修改服务器上的
/etc/ssh/sshd_config
文件vim /etc/ssh/sshd_config
- 常用参数配置:
-
GSSAPIAuthentication
、UseDNS
,设置为no
可在一定程度上加速SSH登录,原理自查。 -
PermitRootLogin
,是否允许root用户登录,自行添加一个账户替代root账户,然后可以关闭root用户登录,提高安全性。(比如有很多人会扫描IP端尝试登录root账户。) -
PubkeyAuthentication
,是否允许密钥登录,这个当然yes
了,最好是只使用密钥登录。 -
PasswordAuthentication
,是否允许密码登录,设置了密钥登录后最好关闭密码登录。
-
- 保存修改,重启
sshd
服务生效systemctl restart sshd
问题及解决方案
-
Bad owner or permissions on /root/.ssh/config
(详细解释参见ServerFault相关问题讨论)chmod 600 ~/.ssh/config