安装
1.安装客户端(大多数默认安装) sudo xxx install openssh-client
既ssh
2.安装服务端 xxx install openssh-server
既sshd
服务管理
systemctl status ssh
配置
客户端
客户端的配置文件放在~./ssh
文件夹下
.ssh/know_hosts :第一次连接陌生主机时会自动建立文中记录的是连接过的主机信息
.ssh/id_rsa :ssh-keygen生成
.ssh/id_rsa.pub :ssh-keygen生成
服务端
1.配置文件一:~/.ssh/也有服务端的设置,用来免密登录 .ssh/authorized_keys
2.配置文件二:主要是服务端sshd的配置 vim /etc/ssh/sshd_config
PasswordAuthentication no|yes #是否允许用户通过登陆系统的密码做sshd的认证,当然也可以设置为no,不使用密码验证,转而使用密钥登录
PermitRootLogin no|yes #是否允许root用户通过sshd服务的认证
AllowUsers westos ? #用户白名单,当前设定是只允许westos登陆
DenyUsers linux ? #用户黑名单,当前设定是只不允许linux登陆
PrintMotd yes #是否打印登录提示信息,提示信息存储在/etc/moed文件中
3.配置文件三:添加sshd登陆登陆信息 vim /etc/motd
4.配置文件四:设置允许连接的主机ip
vim /etc/hosts.deny
中加入 sshd:ALL
拒绝所有主机连接sshd
vim /etc/hosts.allow
中加入 sshd:ip
值允许某个主机连接
日志
5.日志文件
centos :/var/log/secure
ubuntu:/var/log/auth.log
免密登录
免密登录是单向的.
1.在客户端生成公钥和私钥 ssh-keygen -t rsa
2.将公钥上传到服务端 ssh-copy-id user@host
本质上是将客户端的~/.ssh/id_rsa.pub
公钥的内容添加到服务器的~/.ssh/authorized_keys
中
登录与拷贝
1.ssh user@ip
2.1scp /dir/file user@ip:/dir/file
复制本地文件到服务器
2.2scp user@ip:/dir/file /dir/file
复制服务器文件到本地
login shell 和 no-login shell
login shell 指使用su
或者ssh
登录,该模式下shell会自动执行/etc/profile
和 ~/.profile
文件, 但不会执行任何的 bashrc 文件, 所以
- 一般再
/etc/profile
或者~/.profile
里我们会手动去 source bashrc 文件. - 或者在
.sh
中使用export
no-login shell指我们登录后,直接在终端下输入bash
或者bash -c “CMD”
来启动shell,该模式下不会执行profile文件
参考文献:
https://www.cnblogs.com/kevingrace/p/8072860.html
https://blog.csdn.net/robertsong2004/article/details/39522605
意外
centos7可能遇到:
问题:
1.检查sudo vi /etc/ssh/sshd_config
RSAAuthentication yes # 可能找不到,那么不用配置
PubkeyAuthentication yes
AuthorizedKeysFile ~/.ssh/authorized_keys
2.查看系统安全问题:sudo cat /var/log/secure
问题:Authentication refused: bad ownership or modes for directory /home/claroja
更改权限
chmod 700 /home/claroja/.ssh
chmod 600 /home/claroja/.ssh/authorized_keys
重启service sshd restart
参考:
https://blog.csdn.net/linghe301/article/details/8211305