1 免密码访问ssh远程linux
1.1 生成私钥文件
在客户端终端下输入以下命令
1
ssh-keygen -t rsa
每次执行 ssh-keygen -t rsa 产生的私钥文件都会不同
如果文件”~/.ssh/id_rsa”存在,会提示是否覆盖该文件,此时可选择”n”不覆盖该文件而使用已有的id_rsa文件
如果选择”y”则会重新生成”~/.ssh/id_rsa”文件。接下来会提示输入passphrase,回车确定使用空的passphrase,再次回车确认(这里也可以输出passphrase,相当于ssh时登录的密码)。然后会重新生成id_rsa文件和id_rsa.pub文件(在~/.ssh目录下)
1.2 拷贝id_rsa.pub文件到远程服务器
在客户端执行:
1
scp ~/.ssh/id_rsa.pub user-name@target-server-ip:~
将生成的id_rsa.pub文件拷贝到远程服务器的家目录下
1.3 将公钥追加到授权KEY里面
服务器终端下输入下面的命令:
1
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
将客户端机器上的”id_rsa.pub”文件内容追加到”~/.ssh/authorized_keys”文件中。
1.4 设置authorized_keys权限
1
chmod 600 ~/.ssh/authorized_keys
1.5 测试是否配置生效
1
2
3
ssh user-name@target-server-ip
或者
scp ~/file-name user-name@target-server-ip:~
此时不需要再输入密码就可以访问远程服务器
2. Mysql 忘记root密码
2.1 Mysql 8.0
本文的操作系统是ubuntu16.04, mysql是8.0的修改方法,不适合5.x版本
2.1.1 在[mysqld]后加上skip-grant-tables
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
1
2
3
4
5
6
7
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log
skip-grant-tables
2.1.2 重启mysql
1
sudo service mysql restart
2.1.2 修改密码为空
mysql -u root -p //提示输入密码时直接敲回车。
use mysql //选择数据库
update user set authentication_string = '' where user = 'root'; //将密码置空
quit //退出
2.1.3 去除免密码登陆
删掉步骤1的语句: skip-grant-tables
重启服务: service mysqld restart
2.1.4 修改密码
mysql -u root -p //提示输入密码时直接敲回车,刚刚已经将密码置空了
ALTER USER 'root'@'localhost' IDENTIFIED BY '$your-password';
skip-grant-tables模式进行ALTER操作会报错,所以需要将密码置空,再修改密码。