ssh

[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 端口转发

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,再登录,竟然成功了

发表评论

邮箱地址不会被公开。 必填项已用*标注