linux ssh及堡垒机连接
我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第1篇文章,点击查看活动详情
主题
主要说说centos ssh连接服务器的开放配置、通过ssh堡垒机代理连接、及相关的ssh连接工具介绍,当然也夹杂了一些效率干货,最近一段一直在被服务器整起来修炼、也头皮发麻的经历了几次让人头皮发麻的处于安全考量的网路环境,主流的前后端、服务端分离部署,先后搞了java、node、netcore、python,感觉现在自己也快从开发变成入门级的软件实施了,吐个槽,又get新技能一份。
主体部分
CentOS7开启SSH连接
1、 首先,要确保CentOS7安装了 openssh-server,在终端中输入
yum list installed | grep openssh-server
此处显示已经安装了 openssh-server,如果又没任何输出显示表示没有安装 openssh-server,通过输入
yum install openssh-server
2、 找到了 /etc/ssh/ 目录下的sshd服务配置文件 sshd_config,用Vim编辑器打开
将文件中,关于监听端口、监听地址前的 # 号去除
ListenAddress 0.0.0.0
ListenAddress ::
PermitRootLogin yes
PasswordAuthentication yes
输入以下命令检查 22 号端口是否开启监听
netstat -an | grep 22
MobaXterm连接工具
SSH连接工具一堆像是secureCRT、xshell、putty 、XManager等工具,前几年用secureCRT居多,后面一直用的是MobaXTerm
MobaXTerm是一款多功能的SSH客户端,以其高速连接、美观的用户界面以及其他工具所没有的附加功能而深受用户喜爱。MobaXTerm有一个文件浏览器、一个用于管理远程计算机上的图形界面的内置 XServer、许多扩展功能的插件,以及一个无需安装即可进行使用的绿色版本。
MobaXTerm在一个工具中提供了多种个性化功能,以满足网站管理员、程序员、IT 管理员以及所有需要以简化、轻松和有效方式进行远程连接用户的需求。
除此之外,MobaXTerm还提供安全的连接隧道、多种认证方式,并支持所有类型的 SSH 协议。
有很多介绍,在此不展开
通过新建SSH相关session建立连接
连接进入后,左侧为目录及内容拖拽拷贝区域、右侧为命令区域
ssh堡垒机连接
之前用windows下跳板机和VPN代理工具居多一些,主要是因为近期网络安全问题日益被重视,等保3.0、内网公网的要求越来越明确清晰,这同时给远程的部署运维造成了很大的挑战和困难,因此跳板机是当下相对比较常规通用的做法,linux机器作为跳板尚属于首次,介绍以下过程
- 先用ssh连接工具登录(MobaXterm)堡垒机在命令区域通过
//检测网络连通性
ping 192.168.145.130
//// 检查是否安装了 telnet
rpm -qa|grep telnet
// 安装telnet
yum install -y telnet
//检测服务器ssh 端口22 (根据实际端口情况)开放情况
telnet 192.168.145.130 22
//测试密码正确性
ssh 192.168.1.180 root
以上检测确定服务器网络情况、目标机器ssh端口可连通性、密码正确性,用以排查相关服务器情况,以便于协调
紧接着,确保网络、服务器、密码都无问题的前提下,输入目标机器内网地址及登录用户,点击网络设置,通过ssh代理,此处的地址填写堡垒机地址,因之前已登录过,无需再输入堡垒机密码验证,确定后,输入目标机器密码,即可像直连一样进行交互操作了。
Python版本升级(这部分附带)
- 安装
epel:可以理解成官方提供的软件包通常不够,这个是一个第三方软件源提供方
yum install epel-release
yum search python3
yum install python36
python -V
- 更改软连接 此处注意,如非必要更新软连接建议区分以下python3及python2.7的区分,服务器预装了2.7,针对有环境要求的python3区分以下会比较好,如果不进行区分,软连接更新成了python,可能会遇到yum更新问题,无须慌张,
cd /usr/bin
ls -al python --查看当前软连接
ln -sf /usr/python/bin/python3(python 安装目录) /usr/bin/python3
/**
* 找不到pip
*/
yum -y install python-pip
报错信息:protobuf requires Python '>=3.7' but the running Python is 3.6.5
解决方法:更新pip后重新安装。
更新命令:
python -m pip install --upgrade pip
升级了python 后
File "/usr/bin/yum", line 30
except KeyboardInterrupt, e:
^
SyntaxError: invalid syntax
处理解决办法是在首行的注释将python->python2.7即可解决问题
吐槽环节
实质上,在过程中,我经历了在没人指导,相关资料有限且语言非自己主语言的项目功能验证及之前未接触过的业务,花了两周本机部署及数据流梳理,功能验证、
- 搞程序的随着深入,其实方方面面都会接触,各种环境安装,数据库开发工具等等,我基本已把自己的机器搞成了一个虚拟服务器,之前有介绍,太多的环境通过虚机和nginxwebUI给我提供了很大的便利,能够快速的将前后端的调试、启动融为一体,事后自己的机器也相对纯净,不需要反复的装机清理,在此吐槽:我自己也快搞成系统装机大师了..
- 快速熟悉的过程其实就是功能及系统的表对应关系的熟悉,辅助有目的的查看相关代码实现逻辑,一般在一半的过程就基本熟悉部分业务及数据流,其后过程也会加快
- 人对未知或是不擅长的东西总是先天性的恐惧,未战先怯,唯有实践克服以敬之。学习如朝圣,你能庄严正确的面对,才是面对困难的制胜法宝。
- 很多时候,一个问题我们能用常规的反复处理去解决一个问题,可能经常会问自己,耗费几倍的实践去寻找一个最精简的办法是不是有点儿舍近求远,但往往这些不起眼的工作日常,才是我们个人的财富,有别于其他人的财富
结尾彩蛋(mysql批量执行指定目录下sql脚本)
适应于服务器内网未开放直连,需要进行数据同步或者处理 将以下代码存储为 run.sh
#!/bin/sh
#execute all script in specified directory
if [ $# != 1 ] ; then
echo "Parameter error, please re-enter"
exit 1;
fi
MYDATE=`date +%F`
MYSQL_PATH=$1 #指定的目录
if [ ! -d ${MYSQL_PATH} ];
then
echo "The directory does not exist. Enter a new directory"
exit 1;
fi
LOG_FILE=$1/exec_${MYDATE}.log
confirm=
db_pass=
read -p "The directory of the file you entered is [${MYSQL_PATH}],Confirm to continue [y/n]: " confirm
if [ "$confirm" = "y" ] && [ -n $confirm ] ; then
if [ ! $db_pass ] ; then #如果没有设置密码
stty -echo #密码输入保护关闭显示
read -p "Please enter the database password:" db_pass
echo -e "\n"
stty echo
fi
else
echo "You have cancelled the operation!"
exit
fi
for file in ${MYSQL_PATH}/*
do
if [ -f "$file" ] ; then
postfix=`echo $file | awk -F'.' '{print "."$NF}'`
if [ $postfix = ".sql" ] ; then
mysql -uroot -p$db_pass -P3306 --default-character-set=utf8 < $file >& ${MYSQL_PATH}/temp.log
echo $file
echo "[$file]" >>${LOG_FILE}
cat ${MYSQL_PATH}/temp.log >>${LOG_FILE} #输出执行日志
error=`grep ERROR ${MYSQL_PATH}/temp.log` #读取错误日志信息
if [ -n "$error" ] ; then #如果有错误就退出程序
echo $error
exit
fi
fi
fi
done
rm -rf ${MYSQL_PATH}/temp.log
将相关的sql执行文件拷贝到服务器指定目录下,执行以下命令
./run.sh 脚本路径
转载自:https://juejin.cn/post/7141422779563245581