如何较为安全的启动Tron超级节点

启动tron的超级节点时需要指定一个账号(此账号为申请超级节点时使用的账号);该账号将作为超级节点的受益者,获取超级节点的收益。

启动命令

官方的启动命令可以参考:https://github.com/tronprotocol/java-tron
以编译成jar包后,启动为例:

java -jar java-tron.jar -p yourself private key --witness -c yourself config.conf
Example:
java -jar java-tron.jar -p 650950B193DDDDB35B6E48912DD28F7AB0E7140C1BFDEFD493348F02295BD812 --witness -c /data/java-tron/config.conf

很明显,这种方式将会在服务器上留下相关记录(对服务器不做其他安全设置,使用默认的配置);
目前官方主网的版本是支持KeyStore文件来启动节点方式,此方式可以避免在系统中留下秘钥信息;
修改配置文件config.conf中的localwitnesskeystore配置项,修改为将秘钥对应的KeyStore文件名(注意:该项的值为相对于服务目录的路径),如:

localwitnesskeystore = [
"keystore.json"
]

启动流程如下:

1. 启动命令  
   java -jar java-tron.jar --witness -c /xxx/xxx/config.conf  
2. 终端提示输入密码
   Please input your password.
   password:
3. 输入密码,启动进程

此方式,进程启动了,使用history也无法查看输入的密码信息;但进程并非以后台进程的方式运行;如果退出终端,则该进程将退出。
若要以后台进程运行,第一反应是使用nohup&等方式;但使用这种方式,进程启动后的输入密码的交互则无法进行。

编写启动脚本,启动Tron进程

我们的目标简单:以后台进程启动Tron节点,并在系统中不暴露秘钥信息。
如上述分析,如果只是简单的使用命令来启动,是存在这样那样的问题,故笔者尝试使用脚本的方式来启动Tron进程。

  • 依赖环境
    expect
    安装命令如下:
1. CentOS
yum install -y expect
2. Ubuntu
apt-get install expect
备注:以root权限执行
  • 编写脚本
  1. 节点启动脚本:startTron.sh
#!/usr/bin/expect -f
#获取传递过来的密码
set password [lindex $argv 0]
#启动节点进程 
spawn setsid java -jar java-tron.jar --witness -c /xxx/xxxx/config.conf
#监听进程输出关键字password:
expect "password:"
#输入密码至进程
send "$password\r"
expect eof
exit
  1. 服务启动脚本:start.sh
#!/bin/bash
#交互输出提示
echo -n "Enter password:"
#读取输入密码
read pwd
#启动节点
./startTron.sh ${pwd}
  • 启动Tron节点
1. 启动  
sh start.sh
2. 提示交互输入
Enter password:
3. 输入密码,启动节点  
spawn setsid java -jar java-tron.jar --witness -c /xxx/xxx/config.conf
Please input your password.
password: 
  • 校验
1. 查看进程  
ps -ef|grep java  
 24632     1 26 10:05 ?        00:00:23 java -jar java-tron.jar --witness -c /xxx/xxx/config.conf  
2. 退出终端,再登录查看进程是否存活  
   命令如步骤1
3. 查看日志是否在同步区块/出块

你可能感兴趣的:(如何较为安全的启动Tron超级节点)