linux下 ssh链接库文件6,centos 7 源码安装openssh教程

161133ec827d0d4b3038d87b45f900f3.png

环境:centos 7.1.1503 最小化安装

依赖包下载: yum -y install lrzsz zlib-devel perl gcc pam-devel

1、安装openssl ,选用最新发布的版本:openssl-1.1.1g.tar.gz

1)openssl下载地址:https://www.openssl.org/source/openssl-1.1.1g.tar.gz

2)卸载系统预装的openssl ,这一步可以不做

rpm -qa | grep openssl | grep -v lib

yum -y remove openssl-1.0.1e-42.el7.x86_64

1e7e4fcbc8f1eedfef31d7d71f629c97.png

3)安装步骤:

tar -zxvfopenssl-1.1.1g.tar.gz

cdcd openssl-1.1.1g

./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl -Wl,-rpath,/usr/local/openssl/lib shared

make && make install

4)创建软链接

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/openssl/include/openssl /usr/include/openssl

5)更新系统配置

echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

/sbin/ldconfig

6)检查版本

openssl version

88c13ca5378c935f967c3dff1f612b9a.png

2、安装openssh,选用最新发布的版本:openssh-8.3p1.tar.gz

1)openssh下载地址:https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-8.3p1.tar.gz

2)备份系统的openssh配置文件

cp -r /etc/sysconfig/sshd /etc/sysconfig/sshd.bak

cp -r /sys/fs/cgroup/systemd/system.slice/sshd.service /sys/fs/cgroup/systemd/system.slice/sshd.service.bak

cp -r /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.bak

cp -r /usr/lib/systemd/system/sshd.socket /usr/lib/systemd/system/sshd.socket.bak

cp -r /usr/lib/systemd/system/sshd@.service /usr/lib/systemd/system/sshd@.service.bak

cp -r /usr/lib/systemd/system/sshd-keygen.service /usr/lib/systemd/system/sshd-keygen.service.bak

3)卸载系统预装的openssh,这一步可以不做

rpm -qa | grep openssh

yum -y remove openssh-server-6.6.1p1-11.el7.x86_64 openssh-clients-6.6.1p1-11.el7.x86_64 openssh-6.6.1p1-11.el7.x86_64

ed7464fa44e55c1c835725fec9f62f7d.png

4)备份openssh配置文件,这一步可以不做

cp -r /etc/ssh /etc/ssh.bak

rm -rf /etc/ssh  #这一步很重要,必须做

5)安装步骤

tar -zxvf openssh-8.3p1.tar.gz

cd openssh-8.3p1

./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-openssl-includes=/usr/local/openssl/include --with-ssl-dir=/usr/local/openssl --with-zlib --with-md5-passwords --with-pam --with-ssl-engine

make && make install

6)创建软链接

ln -s /usr/local/openssh/sbin/sshd /sbin/sshd

ln -s /usr/local/openssh/bin/ssh /usr/bin/ssh

ln -s /usr/local/openssh/bin/ssh-add /usr/bin/ssh-add

ln -s /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen

ln -s /usr/local/openssh/bin/ssh-keyscan /usr/bin/ssh-keyscan

7)恢复备份的配置文件

mv /etc/sysconfig/sshd.bak /etc/sysconfig/sshd

mv /sys/fs/cgroup/systemd/system.slice/sshd.service.bak /sys/fs/cgroup/systemd/system.slice/sshd.service

mv /usr/lib/systemd/system/sshd.service.bak /usr/lib/systemd/system/sshd.service

mv /usr/lib/systemd/system/sshd.socket.bak /usr/lib/systemd/system/sshd.socket

mv /usr/lib/systemd/system/sshd@.service.bak /usr/lib/systemd/system/sshd@.service

mv /usr/lib/systemd/system/sshd-keygen.service.bak /usr/lib/systemd/system/sshd-keygen.service

8)检查openssh版本

ssh -V

ae82e32456c5de177a39f128166279ee.png

9)修改openssh的配置文件,允许root登录

vi /etc/ssh/sshd_config

将 #PermitRootLogin prohibit-password 修改为PermitRootLogin yes

833cec799cafb6f8a09474cf250d5b67.png

10)将sshd服务设为开机启动

chkconfig sshd on

11)重启sshd服务

systemctl restart sshd && systemctl restart sshd && systemctl restart sshd && systemctl restart sshd &

8db90cddc425c4ac63e3d4b6bd2a6f60.png

至此openssh服务安装完成,不放心的话可以reboot重启机器

ps:下面看下Linux下编译安装openssl不生成动态链接库.so的问题解决

使用官方提供的config命令默认竟然没有生成 .so,解决办法执行 ./config 时增加参数 shared,例如:

./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl -Wl,-rpath,/usr/local/ssl/lib shared

然后 make && make install 即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以直接用别人做好的windows OpenSSL 安装包(我用的是0.9.8j版), 可以从 http://www.slproweb.com/products/Win32OpenSSL.html 下载 OpenSSL for Windows,直接安装。 P.S. OpenSSL for Windows 的源代码有一些数据类型和VC6的编译器不兼容,我发现的不兼容的数据类型如下:   在OpenSSL安装目录的下的include/bn.h文件中,将 #define BN_ULLONG unsigned long long #define BN_ULONG unsigned long long #define BN_LONG long long 分别修改为: #define BN_ULLONG ULONGLONG #define BN_ULONG ULONGLONG #define BN_LONG LONGLONG 否则,会出现编译错误。 二、使用OpenSSL 在VC中配置使用以上的函数: 点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。 在"Show directories for:"的"Include files"选项中新增目录"C:\openssl\include"; "Library files"选择中新增目录"C:\openssl\lib"。 然后在需要链接OpenSSL函数的工程中加入如下两句: #pragma comment(lib, "ssleay32.lib") #pragma comment(lib, "libeay32.lib") 其作用是将OpenSSL所需的导入工程中。 三、问题 我在链接OpenSSL的静态函数时遇到类似以下的问题: Linking... msvcrt.lib(MSVCRT.dll) : error LNK2005: _strchr already defined in libcmtd.lib(strchr.obj) ... 这是由于OpenSSL的静态函数使用的是了VC的多线程DLL的Release版本,而我的程序使用了多线程静态链接的Release版本。 调整OpenSSL的静态函数使用的函数版本即可,调整过程如下: 编辑文件 ms\nt.mak,将该文件第19行 "CFLAG= /MD /Ox /O2 /Ob2 /W3 /WX /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -D_CRT_SECURE_NO_DEPRECATE - D_CRT_NONSTDC_NO_DEPRECATE /Fdout32 -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_MDC2 -DOPENSSL_NO_TLSEXT -DOPENSSL_NO_KRB5 - DOPENSSL_NO_DYNAMIC_ENGINE" 中的"/MD"修改为"/MT"。然后重新编译安装OpenSSL即可。 四、附录:在VC中对C/C++ 运行不同版本编译指令说明 《在VC中对C/C++ 运行不同版本编译指令说明》(http://blog.yesky.com/271/dgkang/1737771.shtml)一文中详细介绍了连接不同版本的编译指令如下: C Runtime Library: /MD MSVCRT.LIB 多线程DLL的Release版本 /MDd MSVCRTD.LIB 多线程DLL的Debug版本 /MT LIBCMT.LIB 多线程静态链接的Release版本 /MTd LIBCMTD.LIB 多线程静态链接的Debug版本 /clr MSVCMRT.LIB 托管代码和非托管代码混合 /clr:pure MSVCURT.LIB 纯托管代码 C++ Standard Library: /MD MSVCPRT.LIB 多线程DLL的Release版本 /MDd MSVCPRTD.LIB 多线程DLL的Debug版本 /MT LIBCPMT.LIB 多线程静态链接的Release版本 /MTd LIBCPMTD.LIB 多线程静态链接的Debug版本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值