ssh使用80端口进行登录

校园网只对外开放80端口,当多天出差的时候需要登录服务器。此时,需要将ssh默认的22端口改为80端口。同时,若占用了80端口,服务器对外的www服务则不能访问了,为了解决此矛盾,按如下方式解决:

1. 修改端口

# cd; pwd
/root
# cat > chport.sh
#!/bin/bash
perl -p -i -e 's/^Port 22/Port 80/' /etc/ssh/sshd_config
perl -p -i -e 's/^Listen 80/Listen 8080/' /etc/httpd/conf/httpd.conf

/etc/init.d/sshd stop
/etc/init.d/httpd stop

/etc/init.d/sshd start
/etc/init.d/httpd start

clear
ctrl + d
# chmod 755 chport.sh
# /root/chport.sh

以上命令建立了一个脚本文件/root/chport.sh。该文件用于修改sshd和http服务的端口,将sshd端口改为80,将httpd的端口改为8080.

这样,修改端口后,即可在外网使用如下命令登录服务器:

$ ssh -X -p 80 user@ip

2. 连接服务器后再改回端口

为了正常进行www服务器的访问,需要在登录进服务器后,将端口改回。这样通过ssh连接到了服务器,同时也能进行www访问了。

# cd; pwd
/root
# cat > rtport.sh
#!/bin/bash
perl -p -i -e 's/^Port 80/Port 22/' /etc/ssh/sshd_config
perl -p -i -e 's/^Listen 8080/Listen 80/' /etc/httpd/conf/httpd.conf

/etc/init.d/sshd stop
/etc/init.d/httpd stop
ctrl + d
# chmod 755 rtport.sh
# /root/rtport.sh

3. 登录到root时自动还原端口,退出root时自动修改端口

登录到了root,则不需要修改后的端口了,这是需要正常的www服务了。这时可以修改.bashrc文件;而退出root的时候,则需要修改端口,否则,下次登录就登录不上去了。这时,可以修改.bash_logout文件。

# cat >> /root/.bashrc
/root/rtport.sh
ctrl + d
# cat >> /root/.bash_logout
/root/chport.sh
ctrl + d

4. crontab定时修改或还原端口

若在还原端口后,突然断网导致中断链接,则再也不能登录服务器了,那不就悲剧了,特别是出差在外,不能回校的时候。此时就需要使用crontab来定时运行上述脚本:

# crontab -e
0       *       *       *       *       /root/chport.sh
30      *       *       *       *       /root/rtport.sh
:wq

上述命令在每小时0分钟的时候修改端口,于是能使用ssh进行远程登录了;每小时30分钟时候,则还原端口,可以正常访问www服务。

当然,在使用ssh登录后,在sudo到root权限,则自动还原端口,正常访问www服务。必要的时候手动运行以上脚本来开启www服务以维持www服务的运行。

5. 解决httpd不能重启的问题

这样反复重启服务,可能造成httpd重启的时候出错,提示程序已死但是pidfile存在的错误。则需运行如下命令来解决:

# ipcs -s | grep apache | \
perl -e 'while(<>){@a=split /\s+/, $_;print "ipcrm sem $a[1]\n"}' | \
sh
# rm -f /var/lock/subsys/httpd
# /etc/init.d/httpd start

发表评论

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

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据