[TOC]
一、openssh升级
0、别人的笔记,本文参考来源
https://www.cnblogs.com/pengyong1211/p/10308658.html
1、下载最新版本 OpenSSH
wget https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-7.8p1.tar.gz
目前最新版本是7.8,已经有openssh8.02
2、编译安装 OpenSSH
tar xzvf openssh-7.8p1.tar.gz
cd openssh-7.8p1
./configure --prefix=/usr --sysconfdir=/etc/ssh
3、把老版本的ssh放到另外一个目录,这步是关键,这样就不用卸载旧版本
mkdir /etc/sshbak
mv /etc/ssh/* /etc/sshbak/
4、编译源码包
make && make install
5、编译安装成功后,进行配置
cp ./contrib/redhat/sshd.init /etc/init.d/sshd ---启动文件
chkconfig --add sshd
chkconfig sshd on
修改配置文件 /etc/ssh/sshd_config
Port 22
PermitRootLogin yes
去掉这2行的注释 ,最后一个是允许root用户直接使用sshd服务登录服务器的!
6、启动
service sshd restart
使用ssh -V 命令查看一下,如果上面都没有报错的话,这里ssh的版本就是7.8了。
最关键的一步就是把老的ssh文件夹移到其他地方,然后新的ssh的目录仍然放在/etc/ssh下面,这样的升级过程中ssh就不会断开了,我这后面都是用这种方式升级openssh。
二、ssh 端口转发
http://wishcell.top/blog/2020/07/10/ssh端口转发
三、免密码登录
0、大致描述
对于自己名下的多台linux机器,每次登录输入密码十分烦琐。
如果想要不输入密码直接登录:
如A:192.168.1.2 作为一台编译服务器,需要在很多机器上登录
此时将其它机器的 ~/.ssh/id_rsa.pub 内容,copy到服务器的 authorized_keys 文件即可。
具体操作如下
1、找到配置服务器端配置文件 sshd_config
系统安装路径:
/etc/ssh/sshd_config
自己采用默认配置安装:
cd openssh-8.02 && ./configure && make -j4 && make install
此时配置文件路径 /usr/local/etc/ssh/sshd_config
2、查看服务器 authorized_keys 配置
打开 sshd_config,找到 AuthorizedKeysFile,
它的默认配置是 .ssh/authorized_keys ,如果不确定 .ssh 的具体位置,可以直接将其写死:
/home/user/.ssh/authorized_keys
3、客户机生成密钥文件和私钥文件id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
具体方法:到客户即上执行命令
ssh-keygen -t [rsa|dsa]
将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或
id_dsa,id_dsa.pub
如果采用 ssh-keygen -t rsa -f rsa_xxx 则可以指定输出文件名
4、同步.pub文件
A、手工,人肉同步
将 .pub 文件复制到服务器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys
B、自动同步
$ ssh-copy-id -i ~/.ssh/id_rsa.pub username@server -p 22
$ ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 10022 user@server"
5、重启 sshd 服务
有些服务器,可以使用命令:
systemctl restart sshd
但是有些不行,直接手工重启,但必须在本机操作,不能远程:
ps -ef | grep sshd 首先找到原来 sshd 课执行文件位置
/usr/sbin/sshd -D
然后将其kill掉,重新启动: /usr/sbin/sshd -D &
6、某些情况下,可能免密失败,仍需要密码,解决办法
A、常规方法,默认文件名
有时,登录服务器时,报错:
`sign_and_send_pubkey: signing failed: agent refused operation`
然后还是要求输入账号密码。
此时,在客户端输入:
[user-dir] # eval "$(ssh-agent -s)"
Agent pid 20392
[user-dir] # ssh-add
Identity added:/home/user/.ssh/id_rsa (user)
[user-dir] # ssh 192.168.1.2 -luser
login: Sat Oct 17 18:28:00 2020 from 192.168.1.3
B、特殊情况,指定文件名
ssh-keygen -f ~/.ssh/myname
ssh-keygen -f ~/.ssh/myname
提示:Your identification has been saved in /home/zorro/.ssh/myname
Your public key has been saved in /home/zorro/.ssh/myname.pub ---注1 (我这个命令生成的就是这个文件名)
之后 ssh-add ~/.ssh/myname (正常情况下 做到这里 再在web上upload就ok了)
好了 重点来了 这时候你需要看一下ssh_config 这个文件里的
IdentityFile ~/.ssh/identity
IdentityFile ~/.ssh/id_rsa ---这个是不是和注1 不一样?
IdentityFile ~/.ssh/id_dsa
如果是, 当然我们最好不要改配置文件,那么
1.把你~/.ssh/下面生成的那俩文件 myname改成id_rsa
mv myname id_rsa
mv myname.pub id_rsa.pub
2.ssh-add id_rsa.pub
7、别名登录
添加的位置:vim /etc/ssh/ssh_config
也可能,它包含了其它配置文件,在其它的配置文件中:
include /etc/ssh/ssh_config.d/*.conf
# 其模板如下
Host <any name here>
HostName <your server address>
Port <22>
User <username>
IdentitiesOnly yes
# 一个具体的例子
Host aliyun
HostName 192.168.21.43
Port 22
User vkso
IdentitiesOnly yes
登录方式:
ssh aliyun
而且可以自动列出所有别名,相当方便
四、本人系统升级遇到的ssh连接诡异问题
原本是OK的,可以远程 ssh ip -luser 登录
将系统升了下级:
yum -y install upgrade && yum -y install update
然后登录失败,输入用户名密码后,直接提示:
permission denied
为此花了好多时间,22端口没有被 firewall 屏蔽,而且 sshd 也正常运行中
最后尝试修改 sshd_config, 将默认端口22改成2222,再登录,竟然成功了