服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - OpenSSH配置指南

OpenSSH配置指南

2019-09-09 16:09大步's blog Linux

这篇文章主要介绍了OpenSSH配置指南,在Linux下配置SSH几乎是网管的必修课XD需要的朋友可以参考下

一、关闭并卸载RedHat9.0自带的Openssh
 
1.1 停止服务
 
 

复制代码

代码如下:

#service sshd stop


 
1.2 卸载Openssh
 

复制代码

代码如下:

#rpm -e openssh --nodeps
#rpm -e openssh-server --nodeps
#rpm -e openssh-clients --nodeps
#rpm -e openssh-askpass-gnome
#rpm -e openssh-askpass


 
二、下载安装最新的openssl和openssh
 
2.1 下载相关软件包至/usr/local/src目录 
 
http://www.openssl.org/source/openssl-0.9.8e.tar.gz

 

 
2.2 安装openssl
 
 

复制代码

代码如下:

#cd /usr/local/src
#tar zxvf openssl-0.9.8e.tar.gz
#cd openssl-0.9.8e
#./config shared zlib
#make 
#make test
#make install
mv /usr/bin/openssl /usr/bin/openssl.OFF
mv /usr/include/openssl /usr/include/openssl.OFF
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl


 
2.3 配置库文件搜索路径
 

复制代码

代码如下:

#echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
#ldconfig -v


 
2.4 查看openssl的版本号,以验正是否安装正确
 

复制代码

代码如下:

#openssl version -a
OpenSSL 0.9.8e 11 Apr 2007
built on: Sat Mar 24 21:24:41 CST 2007
platform: linux-elf
options: bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowfish(idx) 
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DSHA1_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM
OPENSSLDIR: "/usr/local/ssl"


 
三、下载安装最新的openssh
 
3.1 下载相关软件包至/usr/local/src目录 
 
ftp://openbsd.nsysu.edu.tw/BSD/OpenBSD/OpenSSH/portable/openssh-4.6p1.tar.gz
 
3.2 安装
 

复制代码

代码如下:

#cd /usr/local/src
#tar zxvf openssh-4.6p1.tar.gz
#cd openssh-4.6p1
#./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-ssl-dir=/usr/local/ssl --with-md5-passwords --mandir=/usr/share/man 
#make 
#make install


 
3.3 查看openssh版本号,验正安装结果
 
 

复制代码

代码如下:

# ssh -v
OpenSSH_4.6p1, OpenSSL 0.9.8e 11 Apr 2007
usage: ssh [-1246AaCfgkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-e escape_char] [-F configfile]
[-i identity_file] [-L [bind_address:]port:host:hostport]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-R [bind_address:]port:host:hostport] [-S ctl_path]
[-w local_tun[:remote_tun]] [user@]hostname [command]


 
四、启动并验正服务的开启状况
 
4.1 调试启动,如果以下显示均正常,就可以正常启动sshd了。
 
 

复制代码

代码如下:

#/usr/sbin/sshd -d
debug1: sshd version OpenSSH_4.6p1
debug1: private host key: #0 type 0 RSA1
debug1: read PEM private key done: type RSA
debug1: private host key: #1 type 1 RSA
debug1: read PEM private key done: type DSA
debug1: private host key: #2 type 2 DSA
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
socket: Address family not supported by protocol
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.
Generating 768 bit RSA key.
RSA key generation complete.


 
4.2 启动服务
 
 

复制代码

代码如下:

#/usr/sbin/sshd


 
4.3 查看监听端口中是否有22
 
 

复制代码

代码如下:

#netstat -tnlp | grep :22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 21018/sshd 

 
4.4 尝试从本机通过ssh登录
 

复制代码

代码如下:


# ssh root@localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is 03:eb:80:fe:07:d9:9d:00:1c:15:37:93:d1:d3:8e:6d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
root@localhost's password: 
Last login: Wed Apr 11 11:29:04 2007 from localhost.localdomain


 
五、sshd进程及其相关参数详细说明
 
sshd服务是OpenSSH的守护进程。此服务附带的工具程序可以取代rlogin和rsh,在两台会话的主机间通过非安全的Internet 建立起安全的加密连接。sshd监听来自客户端的连接请求,并在接收到请求时fork一个子进程;此子进程将负责处理密钥交换、加密、认证、命令执行及数 据传输等。可以使用命令行选项或者配置文件来配置启动sshd,但命令行中指定的选项将优先于配置文件中的相同选项。
 
-4 强制sshd仅接收来自IPv4格式地址的请求;
 
-6 强制sshd仅接收来自IPv6格式地址的请求;
 
-b 指定ssh v1中服务器密钥的长度位数;
 
-D 此选项只是用来监视sshd的启动状态,在附加此选项时,sshd不会作为一个守护进程启动;
 
-d 此选项将启动调试模式;sshd服务的启动状态会在前台显示,并把详细的调试信息输出至日志文件;此时, sshd不会fork新的子进程,因此仅仅能接受一个连接请求。此先项主要用来调试sshd;
 
-e 输出错误信息到日志文件,不包括正常的调试信息;
 
-f 此选项后接指定的配置文件;默认为/etc/ssh/sshd_config;
 
-g 此选项后跟一个时间期限,默认单位是秒,用来为客户端认证期间提供一个可以等待的期限;如果客户端在此指定期限内认证错误,sshd将断开连接并退出;0表示无时间限制;
 
-h 此选项后跟一个主机密钥文件,用来指定一个sshd启动时读取的主机密钥
文件;在以非root身份启动sshd时必须指定此选项(因为默认 的key文件只有root具有读权限);ssh v1默认的key文件为/etc/ssh/ssh_host_key,sshd v2默认的key文件为 /etc/ssh/ssh_host_rsa_key以
及/etc/ssh/ssh_host_dsa_key;可以为不同版本的协议及不同的密钥算法指定不同的key文件;
 
-i 此选项用来指定通过inetd守护进程启动sshd;sshd需要生成服务端密钥才能接受客户端的请求,这将需要大约10秒钟的时间,如果 每个请求都重新生成一次密钥的话,客户端将不得不等待较长的时间,因此,默认情况下是不使用inet方式启动sshd的;如果使用较短长度的密钥,此选项 将是一个颇富弹性的选择;
 
-k 此选项后跟一个时间期限,用来为ssh v1指定一个重新生成服务端key的时间间隔(默认为一个小时);如此频繁的生成密钥的目的在于不 必存储密钥,因此,超过了一个小时后恢复通讯期间加密的数据几乎是不可能的,哪怕机器被攻入亦或被占据,这将在很大程度上提高了安全性;0表示不重新生成 密钥;
 
-o 用来为配置文件指定一个新的可用选项;
 
-p 指定sshd服务监听的端口(默认是22),可以同时指定多个端口;如果使用此选项,则会忽略配置文件中指定的端口;
 
-q 安静模式,此种情况下将不会产生任何系统日志;正常情况下,服务启动、认证以及每一次终端登录都会被记录;
 
-t 测试模式,仅用来检查配置文件的正确性及密钥是否健壮;此选项多用在配置文件改动时;
 
六、sshd相关的文件详细说明
 

复制代码

代码如下:

~/.hushlogin


 如果配置文件中分别启用了PrintLastLog和PrintMotd选项,则此文件可以用来在屏幕显示前一次的登录时间以及/etc/motd的内容。但不会显示Banner选项指定的banner。
 

复制代码

代码如下:

~/.rhosts


    此文件主要用来实现主机间的认证。如果你的主机上有些用户的主目录位于NFS文件系统上,则必需把这个文件的权限置为全局可读,因为 sshd进程将以root的身份读取此文件。此外,此文件属主必须为相关用户,且其他任何用户均不能具有写权限。一般推荐的权限为600。
 

复制代码

代码如下:

~/.ssh/authorized_keys


    此文件存储的是用户的公钥,当其远程登录时可以用此公钥为其进行认证。公钥信息并非要求高度安全性的文件,但仍推荐将其权限置为700。 如果此文件、~/.ssh目录或者此用户的主目录能被其他用户读取,则此文件将可能被其他非授权用户修改或置换。此种情况下,除非在主配置文件中把 StrictModes的值置为"no",否则sshd将不允许使用此文件。
 

复制代码

代码如下:

~/.ssh/environment


    如果此文件存在,将会在用户登录时读入用户的环境。它只能包含空行、以"#"开头的注释行以及形如“name=value”赋值行,推荐权限为600。默认情况下此功能是禁止的,可以通过PermitUserEnviroment选项开启。
 

复制代码

代码如下:

~/.ssh/known_hosts


   用户曾成功登入过的主机的host key都将存放于此文件,但不包括系统间已经互相成功认证的主机host key,只能让root和属主具有读写权限。
 

复制代码

代码如下:

~/.ssh/rc


    此文件用来在用户的主目录不能正常访问前初始化用户的登录环境,其权限应该为600。
 

复制代码

代码如下:

/etc/host.equiv


    用于主机间的认证,只能让root用户可写。
 

复制代码

代码如下:

/etc/nologin


    如果这个文件存在,sshd将拒绝除root用户外的任何其他用户登录。在任何用户在尝试登录时,此文件都将被显示,但所有非root用户将被拒绝。此文件应该是全局可读的。
 

复制代码

代码如下:

/etc/ssh/ssh_known_hosts


    存入系统级别的互相认证时已知主机的host key。这个文件需要管理员手动配置,可以将已知主机的公钥存入于此文件。此文件只能为root或属主读写,但应该是全局可读的。
 

复制代码

代码如下:

/etc/ssh/ssh_host_key
/etc/ssh/ssh_host_dsa_key
/etc/ssh/ssh_host_rsa_key


    以上三个文件用来存放主机密钥的私钥部分,它们的属主只能为root用户,只能被root用户读取,不能为其他任何用户访问。如果其他用户可以读取此文件,则sshd将不能启动。
 

复制代码

代码如下:

/etc/ssh/ssh_host_key.pub
/etc/ssh/ssh_host_dsa_key.pub
/etc/ssh/ssh_host_rsa_key.pub


    以上三个文件用来存放主机密钥的公钥部分,它们应该是全局可读的,但只有root用户可写。它们分别对应相应的私钥文件。这些文件并没有 什么实际用途,仅仅是用来为用户认证登录提供便利,因此常被copy至其它可信的主机中。可以使用ssh-keygen来生成这些文件。
 

复制代码

代码如下:

/etc/ssh/sshd_config


    sshd的主配置文件;

延伸 · 阅读

精彩推荐
  • LinuxLinux常用的日志文件和常用命令

    Linux常用的日志文件和常用命令

    成功地管理任何系统的关键之一,是要知道系统中正在发生什么事。 Linux 中提供了异常日志,并且日志的细节是可配置的。Linux 日志都以明文形式存储,所...

    Linux教程网2632020-04-18
  • Linux详解Linux系统下PXE服务器的部署过程

    详解Linux系统下PXE服务器的部署过程

    这篇文章主要介绍了Linux系统下PXE服务器的部署过程,包括对PXE的API架构作了一个基本的简介,需要的朋友可以参考下...

    运维之道9812019-07-04
  • Linuxlinux中rmdir命令使用详解(删除空目录)

    linux中rmdir命令使用详解(删除空目录)

    今天学习一下linux中命令: rmdir命令。rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的 ...

    linux命令大全5372019-11-19
  • LinuxLinux中环境变量配置的步骤详解

    Linux中环境变量配置的步骤详解

    Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的...

    Myths7882022-02-10
  • LinuxLinux上设置用户通过SFTP访问目录的权限的方法

    Linux上设置用户通过SFTP访问目录的权限的方法

    这篇文章主要介绍了Linux上设置用户通过SFTP访问目录的权限的方法,SFTP可以理解为使用SSH协议进行FTP传输的协议,因而同时要对OpenSSH进行相关设置,需要的朋...

    OSChina10022019-06-19
  • Linux确保Linux系统安全的前提条件 漏洞防护

    确保Linux系统安全的前提条件 漏洞防护

    Linux 作为开放式的操作系统受到很多程序员的喜爱,很多高级程序员都喜欢编写Linux操作系统的相关软件。这使得Linux操作系统有着丰富的软件支持,还有无...

    Linux之家2642020-04-11
  • Linux手把手教您在 Linux 上使用 GPG 加解密文件

    手把手教您在 Linux 上使用 GPG 加解密文件

    在本教程中,我将告诉你如何用 GPG 加密和解密文件。这是一个简单的教程,你可以在你的 Linux 系统上尝试所有的练习。这将帮助你练习 GPG 命令,并在你...

    Linux中国6962021-12-15
  • LinuxLinux lnmp下无法使用mail发邮件的两种解决方法

    Linux lnmp下无法使用mail发邮件的两种解决方法

    在配置了lnmp环境后,出现了mail函数不能发送邮件的问题,其实有两种方法,一是使用sendmail组件,而是使用postfix。下面为大家一一介绍下 ...

    Linux之家4042019-09-17