java 远程修改linux服务器文件_手把手教你通过修改配置文件实现SSH远程登陆Linux...

3df396b6-2c38-467e-982f-163a6aca033d

干货分享

当我们搭建了一套OpenStack需要在上面玩玩虚拟机,我们需要从镜像启动虚拟机,这个时候我们会去OpenStack的官网查找虚拟机镜像,https://docs.openstack.org/image-guide/obtain-images.html提供了主流Linux镜像,当我们把这些镜像导入到OpenStack中并且启动它,这个时候我们会发现,这些镜像默认不能使用密码登陆,默认开启的是密钥登陆,当我们需要密码登陆的时候,我们就需要修改镜像的内容。下面我们通过一个简单的例子讲解下如何修改镜像,使其能够ssh登陆。


首先我们需要从官网下载镜像文件,这里我们以Ubuntu镜像为例:

wget http://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img

安装guestfish套件用于修改镜像

yum install guestfish -y

下面我们开始修改镜像文件

guestfish --rw -a xenial-server-cloudimg-amd64-disk1.imgWelcome to guestfish, the guest filesystem shell forediting virtual machine filesystems and disk images.Type: ‘help’ for help on commands ‘man’ to read the manual ‘quit’ to quit the shell> run> list-filesystems/dev/sda1: ext4> mount /dev/sda1 /> vi /etc/cloud/cloud.cfg> vi /etc/ssh/sshd_config> quit

开启root登陆

1c592c69234a4633b9926b4f4e275082

开启root登陆

设置密码ubuntu

e962480df0aa452fac87a339752b93da

设置root登陆密码

开启ssh远程登陆

PasswordAuthentication yesPermitRootLogin yes

到此Ubuntu镜像已经开启ssh密码和用户名登陆了,下面我们将修改的镜像导入到OpenStack中进行验证。


上传修改后的镜像到OpenStack系统中

. admin-openrc.shopenstack image create "ubuntu"  --file xenial-server-cloudimg-amd64-disk1.img  --disk-format qcow2 --container-format bare  --public

之后我们创建一个虚拟机

nova list+--------------------------------------+-------------+---------+------------+-------------+----------------------------------+| ID | Name | Status | Task State | Power State | Networks |+--------------------------------------+-------------+---------+------------+-------------+----------------------------------+| 896adee9-b276-4006-a7c8-ea75745b2107 | instance-01 | SHUTOFF | - | Shutdown | public=172.24.4.9, 2001:db8::20 || 8519525a-5c60-4eb5-949b-e89b5d6eb7a4 | instance-02 | ACTIVE | - | Running | public=172.24.4.14, 2001:db8::10 || df235276-5cb8-4e46-89f1-d8b20472f072 | instance-03 | SHUTOFF | - | Shutdown | public=172.24.4.6, 2001:db8::3 |+--------------------------------------+-------------+---------+------------+-------------+----------------------------------+
998b5c99fff1468383f2533fe9a7cbe1

虚拟机列表

我们通VNC验证下用户名和密码登陆

4a534038145a4dc485a70ef687ea03a8

VNC ssh登陆

可以看到VNC使用用户名和密码是可以登陆的。

下面我们验证下ssh远程登陆

9af43b945721460bbe880a1229894611

ssh远程登陆

可以看到ssh远程登陆也是没有问题的。

0dcff3b2-d869-41b4-bfc7-c27c98da2e62

干货分享


通过以上修改和验证,修改的镜像实现了用户名和密码登陆,同时也实现了ssh远程登陆,在实际某些应用场景下对我们很有帮助,修改既有的基础镜像用于构建我们业务需要的镜像。

参考:

https://docs.openstack.org/image-guide/obtain-images.html

https://docs.openstack.org/image-guide/modify-images.html

文章如有不妥之处,欢迎指正!谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我了解了。针对你的问题,我可以向你介绍一个简单的实现方式。 首先,你可以使用 Servlet 过滤器来实现 IP 访问次数的限制。在过滤器中,你可以记录每个 IP 的访问次数,并在访问次数超过一定阈值时,拒绝该 IP 的访问。 以下是一个简单的实现代码示例: ```java public class IpAccessFilter implements Filter { private Map<String, Integer> ipAccessMap; private int maxAccessPerIp; // 单个 IP 最大访问次数 @Override public void init(FilterConfig filterConfig) throws ServletException { ipAccessMap = new HashMap<>(); maxAccessPerIp = Integer.parseInt(filterConfig.getInitParameter("maxAccessPerIp")); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; String remoteAddr = request.getRemoteAddr(); // 记录 IP 访问次数 int accessCount = ipAccessMap.getOrDefault(remoteAddr, 0) + 1; ipAccessMap.put(remoteAddr, accessCount); // 判断 IP 访问次数是否超限 if (accessCount > maxAccessPerIp) { HttpServletResponse response = (HttpServletResponse) servletResponse; response.sendError(HttpServletResponse.SC_FORBIDDEN, "Access limit exceeded."); return; } filterChain.doFilter(servletRequest, servletResponse); } @Override public void destroy() { // 清理资源 ipAccessMap.clear(); } } ``` 在上面的代码中,`maxAccessPerIp` 是一个初始化参数,表示单个 IP 最大访问次数。在 `doFilter` 方法中,我们首先记录了每个 IP 的访问次数,并判断是否超过了阈值。如果超过了阈值,我们就返回一个 HTTP 403 错误。 最后,在 web.xml 文件配置过滤器: ```xml <filter> <filter-name>IpAccessFilter</filter-name> <filter-class>com.example.IpAccessFilter</filter-class> <init-param> <param-name>maxAccessPerIp</param-name> <param-value>10</param-value> </init-param> </filter> <filter-mapping> <filter-name>IpAccessFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 在上面的配置中,我们将过滤器应用到所有 URL 上,并设置了 `maxAccessPerIp` 参数为 10,表示单个 IP 最多访问 10 次。你可以根据自己的需求调整这个参数。 希望这个实现方式能够帮助到你。如果你还有其他问题,可以继续问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值