跳至主要內容

Linux

SunSeekerX大约 7 分钟

Linux

📌 Linux 目录

Linux-folder
Linux-folder

📌 学习资源

Linux 命令大全open in new window

oh-my-zsh

📌 ssh 登录服务器

ssh -p 12333 root@${your ip}
# 使用密钥文件
ssh -i ~/work/data/id_rsa -p 22 root@{your ip}

配置 ssh 密钥文件登录

需要检查密钥文件是否存在,请运行ls命令ls -l ~/.ssh/id_*.pub检查是否存在。

1. 制作密钥对

首先在服务器上制作密钥对。首先用密码登录到你打算使用密钥登录的账户,然后执行以下命令:

ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
Enter same passphrase again: <== 再输入一遍密钥锁码
Your identification has been saved in /root/.ssh/id_rsa. <== 私钥
Your public key has been saved in /root/.ssh/id_rsa.pub. <== 公钥
The key fingerprint is:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host

密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用。当然,也可以留空,实现无密码登录。

现在,在 root 用户的家目录中生成了一个 .ssh 的隐藏目录,内含两个密钥文件。id_rsa 为私钥,id_rsa.pub 为公钥。

2. 在服务器上安装公钥

现在您本地 Ubuntu 计算机有了 SSH 密钥,下一步是将公用密钥复制到要管理的远程服务器。

将公钥复制到服务器的最简单和建议的方法是使用ssh-copy-id命令。运行命令ssh-copy-id server_username@server_ip_address即可复制远程服务器。

server_username是远程服务器用户的名称,server_ip_address是你的服务器 IP 地址。系统将提示您输入远程用户密码。

通过身份验证后,公钥~/.ssh/id_rsa.pub将追加到远程用户~/.ssh/authorized_keys文件中,然后 ssh-copy-id 将会退出。

并且提示你可以运行命令ssh 'username@server_ip_address'登录到远程服务器。

ssh-copy-id remote_username@server_ip_address
remote_username@server_ip_address's password:

如果由于某些原因您的本地计算机上没有ssh-copy-id实用程序,请使用以下命令复制公钥。

cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'username@server_ip_address'"
and check to make sure that only the key(s) you wanted were added.

完成上述步骤后,您应该能够免密码登录到远程服务器。要测试它,请尝试通过 SSH 登录到服务器。

键入以下命令,在服务器上安装公钥:

[root@host ~]$ cd .ssh
[root@host .ssh]$ cat id_rsa.pub >> authorized_keys

如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:

[root@host .ssh]$ chmod 600 authorized_keys
[root@host .ssh]$ chmod 700 ~/.ssh
# Ubuntu ssh免密配置之后仍然需要输入密码
chmod go-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

3. 设置 SSH,打开密钥登录功能

编辑 /etc/ssh/sshd_config 文件,进行如下设置:

RSAAuthentication yes
PubkeyAuthentication yes

另外,请留意 root 用户能否通过 SSH 登录:

PermitRootLogin yes

当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录:

PasswordAuthentication no

最后,重启 SSH 服务:

# RHEL/CentOS系统
service sshd restart
# Ubuntu系统
service ssh restart
# Debian系统
/etc/init.d/ssh restart

📌 ubuntu

ubuntu22.4 开启 root 登录

  1. 使用管理权限打开/etc/ssh/sshd_config文件,并更改以下行
FROM:
#PermitRootLogin prohibit-password
TO:
PermitRootLogin yes

或者使用以下命令快速替换

sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

重启 ssh 服务

sudo systemctl restart ssh

ubuntu 查看端口被占用并处理

netstat -tunlp | grep 端口号
  • -t (tcp) 仅显示 tcp 相关选项
  • -u (udp)仅显示 udp 相关选项
  • -n 拒绝显示别名,能显示数字的全部转化为数字
  • -l 仅列出在 Listen(监听)的服务状态
  • -p 显示建立相关链接的程序名

如查看**端口,也可以在终端中输入:

lsof -i:**

若要停止使用这个端口的程序,使用 kill +对应的 pid

kill pid

更改 ssh 端口

一、更改 ssh 的端口

1.修改 sshd_config

vim /etc/ssh/sshd_config

2.在 port 后面添加端口即可,这些端口都是并列的,添加后如下

Port 22
Port 443

3、重启 ssh 服务

sudo service ssh restart

二、禁止远程登录 root 用户

1.修改/etc/ssh/sshd_config

vim /etc/ssh/sshd_config

# 将 PermitRootLogin 改为 PermitRootLogin no

2.重启

service sshd restart

修改 root 密码

步骤方法
修改 root 密码执行命令 sudo passwd root
输入密码可以和 ubuntu 密码一致,也可以修改 (密码会让你输入两次)
修改 ssh 配置执行命令 sudo vi /etc/ssh/sshd_config
修 改 PermitRootLogin进入 ssh 配置界面后找到 PermitRootLogin,将它后面改为 yes,保存 (按 i 进入编辑模式,编辑完 esc 退出,:w 保存当前文件,:q 退出)
重启 ssh 服务执行命令 sudo service ssh restart

连接虚拟机中的 ubuntu

# 1 安装ssh
sudo apt-get install openssh-server
# 2 启动ssh服务和确认
sudo /etc/init.d/ssh start
# 3 确认ssh服务启动
ps -e | grep ssh

📌 查看 LINUX 发行版本名和版本号

2017-01-16

最近跟合作方支付公司(一个北京的互联网支付公司,就不具体提名字啦)沟通的时候,需要对方生成非对称加密密钥公钥提供给我方,对方技术是个妹子。不懂怎么在预发/生产机器上面生成加密算法的公私钥,也不知道怎么查看系统版本。属于一问三不知类型,怎么办~ 我也只能打电话过去一步步手把手教如何查看发行版,如何安装命令,如何生成对应的公私钥。下面讲讲如何查看系统发行版和版本号。

查看 LINUX 发行版的名称及其版本号的命令,这些信息对于添加正确的软件更新源很有用,而当你只能在命令行下工作的时候,下面的方法可以帮忙。

一、查看 Linux 内核版本命令(两种方法):

1、cat /proc/version

[root@localhost ~]# cat /proc/version
Linux version 2.6.18-194.8.1.el5.centos.plus
(mockbuild@builder17.centos.org) (gcc version 4.1.220080704
(Red Hat 4.1.2-48)) #1 SMP Wed Jul 7 11:50:45 EDT 2010

2、uname -a

[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.18-194.8.1.el5.centos.plus
#1 SMP Wed Jul 7 11:50:45 EDT 2010 i686 i686 i386 GNU/Linux

二、查看 Linux 系统版本的命令(3 种方法):

1、lsb_release -a,即可列出所有版本信息:

[root@localhost ~]# lsb_release -a
LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: CentOS
Description: CentOS release 6.5 (Final)
Release: 6.5
Codename: Final

这个命令适用于所有的 Linux 发行版,包括 Redhat、SuSE、Debian…等发行版。2、cat /etc/redhat-release,这种方法只适合 Redhat 系的 Linux:

[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.7 (Final)

3、cat /etc/issue,此命令也适用于所有的 Linux 发行版。

[root@localhost ~]# cat /etc/issue
CentOS release 6.7 (Final)
Kernel \r on an \m

📌 Ubuntu 更新软件和系统

apt-get update: 升级安装包相关的命令,刷新可安装的软件列表(但是不做任何实际的安装动作)

apt-get upgrade: 进行安装包的更新(软件版本的升级)

apt-get dist-upgrade: 进行系统版本的升级(Ubuntu 版本的升级)

do-release-upgrade: Ubuntu 官方推荐的系统升级方式,若加参数-d 还可以升级到开发版本,但会不稳定

📌 申请通配符证书

安装 certbot

certbot
certbot
$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install certbot

申请证书

sudo certbot certonly --manual -d example.com -d *.example.com --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory

例如

sudo certbot certonly --manual -d yoouu.cn -d *.yoouu.cn --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory

按照提示设置 DNS 解析

DNS解析
DNS解析

Nginx 配置

server {
    listen      80;
    server_name example.com;
    return      301     https://$server_name$request_uri;
}

server {
    listen      443 ssl;
    server_name example.com;

    charset     utf-8;

    add_header X-Content-Type-Options nosniff;

    ssl on;
    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

}
上次编辑于:
贡献者: SunSeekerX