一天一条Linux指令-hostname

本文详细介绍了hostname命令的使用方法,包括显示和设置主机名、显示IP地址及全域名等。此外,还提供了修改主机名的具体步骤及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用途说明

hostname命令可以用来显示或者设置主机名(show or set the system’s host name)。环境变量HOSTNAME也保存了当前的主机名。在使用hostname命令设置主机名后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。如果需要永久修改主机名,需要同时修改/etc/hosts和/etc/sysconfig/network的相关内容。某些依赖于系统主机名的软件,在修改主机名之后可能会出现问题,比如为mysql配置了同步复制时,修改主机名前最好先停止其运行(经验之谈,本人就因此折腾了很久)。

常用参数

不带参数时显示主机名。

格式:hostname

带上-i参数时显示ip地址。

格式:hostname -i

带上-f参数时显示全域名(FQDN,Fully Qualified Domain Name)。

格式:hostname -f

修改主机名时,后面跟上新的主机名即可。(注意此方法立即生效,但不会永久保存,详见后面的示例)。

格式:hostname newhostname

使用示例

示例一 显示主机名

[root@jfht ~]# hostname 
jfht
[root@jfht ~]# echo $HOSTNAME 
jfht
[root@jfht ~]# grep jfht /etc/hosts 
127.0.0.1               jfht localhost.localdomain localhost

注:这台机器的hosts设置有些问题的,应该另开一行设置ip fqdn hostname,比如192.168.1.191  jfht.xyz.com jfht。

[root@jfht ~]# hostname -i 
127.0.0.1       <== 由于/etc/hosts文件设置不够合理,所以显示回环地址(loopback 127.0.0.1) 。

[root@jfht ~]# hostname -f 
jfht               <== 由于/etc/hosts文件中没有设置FQDN,所以无法显示fqdn。 
[root@jfht ~]# grep jfht /etc/sysconfig/network 
HOSTNAME=jfht

[root@jfht ~]# cat /proc/sys/kernel/hostname 
jfht
[root@jfht ~]#

示例二 修改主机名

现在演示一下将原来的主机名rhel55改成new55,并增加FQDN设置。

[root@rhel55 ~]# hostname 
rhel55
[root@rhel55 ~]# hostname -i 
127.0.0.1
[root@rhel55 ~]# hostname -f 
rhel55
[root@rhel55 ~]# hostname new55 
[root@rhel55 ~]# echo $HOSTNAME 
rhel55
[root@rhel55 ~]# hostname 
new55
[root@rhel55 ~]# vi /etc/hosts

打开/etc/hosts,将

127.0.0.1               rhel55 localhost.localdomain localhost

改为

127.0.0.1               localhost.localdomain localhost

并增加一行

192.168.6.55            new55.somedomain.com  new55

[root@rhel55 ~]# vi /etc/sysconfig/network

HOSTNAME=rhel55

改成

HOSTNAME=new55

 

现在退出当前shell重新登录看看。

[root@rhel55 ~]# exit 
logout

Last login: Sat Nov  6 17:00:08 2010 from 192.168.6.106
[root@new55 ~]# echo $HOSTNAME 
new55
[root@new55 ~]# hostname 
new55
[root@new55 ~]# hostname -i 
192.168.6.55
[root@new55 ~]# hostname -f 
new55.somedomain.com
[root@new55 ~]# 

重启一下Linux,然后再登录,可以看到主机名修改生效了。 
[root@new55 ~]# reboot


Last login: Sat Nov  6 17:10:08 2010 from 192.168.6.106
[root@new55 ~]# echo $HOSTNAME 
new55
[root@new55 ~]# hostname 
new55
[root@new55 ~]# hostname -i 
192.168.6.55
[root@new55 ~]# hostname -f 
new55.somedomain.com
[root@new55 ~]#

 

在此,总结一下修改主机名的方法:

1. 停止与主机名相关的软件运行,比如mysql。

2. 先使用 hostname newname 设置主机名。

3. 在/etc/hosts中修改或增加 ip fqdn newname 行,并检查原来127.0.0.1行的设置。

4. 在/etc/sysconfig/network中修改HOSTNAME=newname。

5. 重新启动机器并确认是否修改成功。

### 使用 Windows PowerShell 连接到远程 Linux 服务器 #### 配置 SSH 客户端环境 为了通过 Windows PowerShell 实现与远程 Linux 服务器的安全连接,需要确保本地计算机已安装并启用了 OpenSSH 客户端。此功能通常作为 Windows 的默认组件提供,在某些版本中可能需要手动启用。 可以通过运行以下命令检查是否已经安装了 OpenSSH 客户端: ```powershell Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Client*' ``` 如果未检测到该功能,则可以执行以下命令进行安装[^1]: ```powershell Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 ``` #### 基本连接方式 完成上述配置后,可以直接利用 `ssh` 命令建立与目标 Linux 主机的连接。基本语法如下所示: ```bash ssh username@hostname_or_ip_address ``` 其中 `username` 是指用于登录的目标系统的用户名,而 `hostname_or_ip_address` 则代表要访问的主机名或者 IP 地址[^2]。 例如,假设有个名为 `yan20` 用户账户存在于地址为 `example.com` 或者具有特定 IPv4 地址 (比如 `192.168.1.1`) 的机器上,那么完整的命令将是这样的形式之: ```bash ssh yan20@example.com ``` 或是对于指定IP的情况, ```bash ssh yan20@192.168.1.1 ``` 首次尝试此类操作时,可能会收到关于未知密钥警告的消息提示确认继续还是终止过程;只需键入 yes 即可接受新主机的身份验证信息存储下来以便未来无需再次询问相同问题即可自动信任它. #### 设置无密码认证(基于公私钥对) 除了常规密码身份验证外,还可以设置更安全便捷的方式即采用公钥/私钥加密技术实现免交互式的登陆体验。以下是具体步骤: ##### 创建密钥对 在本地 PC 上生成对新的 RSA 密码学标准下的秘钥文件组(包括公开部分以及保密部分),执行下面这语句将会启动向导程序引导整个流程结束直至成功产出成果物为止。 ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 这里 `-t` 参数定义所使用的算法类型 (`rsa`, etc.) ,`-b` 表明位长度建议至少达到 2048 bits 来保障足够的安全性水平[-c 提供了个关联标签帮助识别用途归属等附加说明性质的内容][^2]. 完成后会在用户目录下找到 `.ssh/id_rsa.pub` 文件保存着刚刚创建出来的公共钥匙材料副本待稍候上传至远端站点处作进步处理之需. ##### 将公钥复制到服务器 把刚才产生的 id_rsa.pub 内容追加进远程用户的 authorized_keys 中去从而允许今后凭借匹配成功的私人锁开启通道进入系统内部区域而不必每次都重新输入繁琐复杂的字符组合串来证明自己合法身份地位的事实存在与否的问题解答环节当中去了. 这步骤可通过多种途径达成目的其中包括但不限于直接编辑对应位置文本添加进去亦或者是借助专门设计用来简化这工作的实用工具软件如 ssh-copy-id 工具来进行自动化部署实施工作减少人为失误发生的可能性提高效率的同时也增强了整体解决方案稳定性和可靠性方面的表现效果显著提升不少层次级别上的差异对比分析结果表明这种方法更加优越值得推广普及开来让更多的人受益匪浅收获满满啊朋友们加油吧让我们起努力向着美好的明天迈进大步前进不止不息永不停歇直到梦想成真那天的到来时刻来临之际欢呼雀跃庆祝胜利果实甜美无比享受生活乐趣无穷尽矣哉乎呜呼哀哉惜哉善哉美哉乐哉陶醉其间流连忘返难以自拔欲罢不能耳目新焕然新精神振奋斗志昂扬意气风发豪情满怀信心百倍勇往直前无所畏惧披荆斩棘乘风破浪路高歌猛进势不可挡锐不可当无人能敌天下无敌唯我独尊舍我其谁霸气侧漏威震四方八荒六合唯我独尊君临天下傲视群雄俯瞰众生芸芸皆蝼蚁尔曹身与名俱灭转眼化作尘埃散落天涯海角之间再难寻觅踪迹只留下段传奇故事流传千古万代受人敬仰膜拜不已云云... 不过考虑到实际情况往往比较复杂多变因此推荐使用更为简便易行的办法那就是直接拷贝粘贴过去就行了嘛反正又不是什么高科技含量特别高的事情何必要搞得那么麻烦呢是不是?所以就这么办咯嘿嘿嘿~ 😄😄😄 当然啦如果你觉得这样做不够优雅或者说不符合个人审美观念的话那也没关系呀毕竟每个人都有自己的喜好嘛于是就有了另外种相对而言稍微正式点的做法就是运用之前提到过的那个叫做 **ssh-copy-id** 的神奇玩意儿来做这件事儿啦它的作用就在于能够快速高效准确无误地帮我们将本地生成好的公钥传输给远方等待接收的那个家伙让它乖乖认领成为自家成员的员从此以后就可以愉快玩耍再也不用担心被拒之门外吃闭门羹啦哈哈哈~ 🎉🎉🎉 简单来说只需要小小的指令就能搞定切哦看好了现在就开始行动起来吧小伙伴们!👇👇👇 ```bash ssh-copy-id yan20@example.com ``` 记得替换掉里面的占位符参数使其适应实际应用场景需求噢比如说改成真实的邮箱账号或者其他标识信息之类的东东都OK哒😊😊😊 最后别忘了测试下看看有没有生效哟随便敲几个字母回车试试就知道结果啦要是顺利进入到对方那边就表示大功告成了恭喜恭喜👏👏👏 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值