Centos清理内存 内存回收释放及内存使用查看的相关命令
在清理前内存使用情况
free -m
用以下命令清理内存
echo 1 > /proc/sys/vm/drop_caches
清理后内存使用情况再用以下命令看看。
free –m
多出很多内存了吧。
查看内存条数命令:
dmidecode |grep -A16 "Memory Device$"
在清理前内存使用情况
free -m
用以下命令清理内存
echo 1 > /proc/sys/vm/drop_caches
清理后内存使用情况再用以下命令看看。
free –m
多出很多内存了吧。
查看内存条数命令:
dmidecode |grep -A16 "Memory Device$"
创建4g swap分区
dd if=/dev/zero of=/var/swap bs=1024 count=4194304
mkswap /var/swap
激活swap分区
swapon /var/swap
设置自动挂载
vi /etc/fstab
/var/swap swap swap defaults 0 0
重启服务器
shutdown -r now
查看内存使用状态
free -m
total used free shared buff/cache available
Mem: 991 347 261 40 382 382
Swap: 4096 0 4096
创建swap分区成功!
openssl genrsa -out private.pkcs1.pem 2048
openssl pkcs8 -topk8 -inform PEM -in private.pkcs1.pem -outform pem -nocrypt -out private.pkcs8.pem
openssl rsa -in private.pkcs8.pem -out private.pkcs1.pem
openssl rsa -in private.pkcs1.pem -pubout -out public.pkcs8.pem
openssl rsa -in private.pkcs8.pem -pubout -out public.pkcs8.pem
openssl rsa -pubin -in public.pkcs8.pem -RSAPublicKey_out -out public.pkcs1.pem
openssl rsa -RSAPublicKey_in -in public.pkcs1.pem -pubout -out public.pkcs8.pem
openssl生成的RSA私钥, 与 ssh-keygen生成的私钥, 格式相同,但是公钥格式不相同
首先产生私钥,使用如下命令(因为默认的是2048位,因此这里没有传入key len):
openssl genrsa -out private.pkcs1.pem 2048
默认2048位, -3 表示公钥指数e=3的RSA2048密钥对,提高验证签名的效率
openssl genrsa -3 -out private.pkcs1.pem
使用如下命令:openssl rsa -pubout -in private.pkcs1.pem -out public.pkcs8.pem
ssh-keygen -i [-m key_format] [-f input_keyfile]
ssh-keygen -f public.pkcs8.pem -i -mPKCS8 > pub.pem
转换完成的 priv.pem 和 pub.pem 即为符合ssh-keygen格式的密钥对。
openssl rsa命令生成RSA Key时,有3种可选格式,分别为PEM,DER和NET, 通过-inform参数指定,默认为PEM。
DER: 原始的RSA Key按照ASN1 DER编码的方式存储
PEM: DER经过base64编码转换为PEM格式
NET: OpenSSL的帮助提示显示,NET是一个同老式的Netscape server和微软IIS .key文件兼容的格式
openssl rsa -inform PEM -in Key0.pem -outform DER -out Key0.der
openssl rsa -inform PEM -in Key0_pub.pem -pubin -outform DER -out Key0_pub.der
注意: PEM是DER格式进行base64编码的格式,那PEM通过base64解码应为DER格式:
openssl base64 -d -in Key0.pem -out Key0.bin
openssl base64 -d -in Key0_pub.pem -out Key0_pub.bin
使用openssl rsa命令转换:
openssl rsa -inform DER -in Key0.der -outform PEM -out Key0.PEM
openssl rsa -inform DER -in Key0_pub.der -pubin -outform PEM -out Key0_pub.PEM
使用openssl base64命令转换:
openssl base64 -e -in Key0.der -out Key0.pem
openssl base64 -e -in Key0_pub.der -out Key0_pub.pem
openssl rsa命令 与 openssl base64命令,唯一不同:
后者Key0_pub.pem是通过openssl base64命令得到的文件,
丢失了"-----BEGIN PUBLIC KEY-----“和”-----END PUBLIC KEY-----"这两条注释信息
直接通过openssl rsa命令的-text参数输出可读的TXT格式:
openssl rsa -inform PEM -in Key0.PEM -text -out Key0.txt
openssl rsa -inform PEM -in Key0_pub.PEM -pubin -text -out Key0_pub.txt
注意: 转换为TXT的PEM文件需要包含"-----BEGIN PUBLIC KEY-----“和”-----END PUBLIC KEY-----"标记,没有这个标记转换会失败
openssl rsa -inform PEM -in Key1.txt -outform PEM -out Key1.pem
TXT文件最后的"-----BEGIN PUBLIC KEY-----“和”-----END PUBLIC KEY-----"部分就是PEM内容
注意: 输入格式和输出格式都需要指定为PEM格式。
为什么输入明明是txt文本,却需要指定为PEM格式呢?
打开Key1.txt文件看下文件格式,除了前面部分RSA Key的各种参数外,
在文件最后面还包含了一段由
"-----BEGIN RSA PRIVATE KEY-----“和”-----END RSA PRIVATE KEY-----"包含的部分。
因此工具在处理输入的TXT文件时,会识别并提取
"-----BEGIN RSA PRIVATE KEY-----“和”-----END RSA PRIVATE KEY-----"字符串中间的部分。
所以, 即使在TXT文件内输入其它的字符,openssl工具也可以正确提取,前提是"BEGIN"和"END"格式字符串内是一个完整的Key。
openssl x509 -in www.xx.com.crt -out www.xx.com.pem
openssl x509 -outform der -in your-cert.pem -out your-cert.crt
使用OpenSSL进行转换
以下命令允许将证书和密钥转换为不同的格式,使其与特定类型的服务器或软件兼容。
将DER文件(.crt .cer .der)转换为PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
将PEM文件转换为DER
openssl x509 -outform der -in certificate.pem -out certificate.der
将包含私钥和证书的PKCS#12文件(.pfx .p12)转换为PEM
openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes
You can add -nocerts to only output the private key or add -nokeys to only output the certificates.
将PEM证书文件和私钥转换为PKCS#12(.pfx .p12)
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
将PEM转换为CRT(.CRT文件)
openssl x509 -outform der -in certificate.pem -out certificate.crt
OpenSSL转换PEM
将PEM转换为DER
openssl x509 -outform der -in certificate.pem -out certificate.der
将PEM转换为P7B
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
将PEM转换为PFX
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
OpenSSL转换DER
将DER转换为PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
OpenSSL转换P7B
将P7B转换为PEM
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
将P7B转换为PFX
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
OpenSSL转换PFX
将PFX转换为PEM
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
通过OpenSSL生成rsa密钥
在命令行上使用OpenSSL,首先需要生成公钥和私钥,应该使用-passout参数密码保护此文件,该参数可以采用许多不同的形式,可以请参阅OpenSSL文档。
openssl genrsa -out private.pem 1024
这将创建一个名为private.pem的密钥文件,该文件使用1024位(bits)。该文件实际上同时具有私钥和公钥,可以从该文件中提取公共密钥:
openssl rsa -in private.pem -out public.pem -outform PEM -pubout
or
openssl rsa -in private.pem -pubout > public.pem
or
openssl rsa -in private.pem -pubout -out public.pem
现在你的public.pem只包含公钥,可以和第三方自由地分享。可以通过使用公钥加密自己的东西然后使用私钥进行解密来测试,首先我们需要一些数据做加密:
示例文件:
echo 'too many secrets' > file.txt
现在在file.txt中有一些数据,可以使用OpenSSL和公钥进行加密:
openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
这将创建一个加密版本的file.txt,命令这个文件为file.ssl(如果直接打开这个文件查看那么它看起来只是二进制垃圾,人类无法看懂)。然后可以使用私钥解密它:
openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
现在在decryptpted.txt中有一个未加密的文件:
cat decrypted.txt
|output -> too many secrets
OpenSSL中的RSA工具选项
名称:
rsa - RSA密钥处理工具
概要:
openssl rsa [-help] [-inform PEM | NET | DER] [-outform PEM | NET | DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-aes128] [ -aes192] [-aes256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin ] [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [-engine id]
说明:
rsa命令处理RSA密钥。它们可以在各种形式之间进行转换,并将其组件打印出来。注意,此命令使用传统的SSLeay兼容格式进行私钥加密:较新的应用程序应使用pkcs8实用程序使用更安全的PKCS#8格式。
命令选项:
-help
打印出使用信息。
-inform DER|NET|PEM
指定输入格式。 DER选项使用与PKCS#1 RSAPrivateKey或SubjectPublicKeyInfo格式兼容的ASN1 DER编码格式。 PEM格式是默认格式:它由DER格式base64编码,带有附加的页眉和页脚行。在输入PKCS#8格式的私钥也被接受。 NET格式是在NOTES部分中描述的格式。
-outform DER|NET|PEM
指定输出格式,选项与-inform选项的含义相同。
-in filename
如果未指定此选项,则指定从或从标准输入读取密钥的输入文件名。如果密钥加密,将提示输入密码。
-passin arg
输入文件的密码来源。有关arg的格式的更多信息,参阅openssl中的PASS PHRASE ARGUMENTS部分。
-out filename
如果未指定此选项,则指定将密钥写入或输出的输出文件名。如果设置了任何加密选项,则会提示输入密码。输出文件名不能与输入文件名相同。
-passout password
输出文件密码来源。有关arg的格式的更多信息,参阅openssl中的PASS PHRASE ARGUMENTS部分。
-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
这些选项在输出之前用指定的密码加密私钥。会有同通行提示信息。如果没有指定这些选项,则key以纯文本形式写入。这些选项只能用于PEM格式的输出文件。
-text
除了编码版本之外,以纯文本形式打印各种公共或私人密钥组件。
-noout
此选项可防止输出密钥的编码版本。
-modulus
此选项打印出该键的取模数值。
-check
此选项将检查RSA私钥的一致性。
-pubin
默认情况下,从输入文件读取私钥:使用此选项读取公钥。
-pubout
默认情况下会输出一个私钥:使用此选项将会输出一个公钥。如果输入是公钥,则会自动设置此选项。
-RSAPublicKey_in, -RSAPublicKey_out
像-pubin和-pubout一样,除了使用RSAPublicKey格式的情形。
-engine id
指定一个引擎(通过其获得唯一的id字符串)将导致rsa尝试获得对特定引擎功能的引用,从而在需要时进行初始化。然后,引擎将被设置为所有可用算法的默认值。
笔记
PEM私钥格式使用以下页眉和页脚行:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
PEM公钥格式使用以下页眉和页脚行:
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----
PEM RSAPublicKey格式使用以下页眉和页脚线:
-----BEGIN RSA PUBLIC KEY-----
-----END RSA PUBLIC KEY-----
NET格式是与旧的Netscape服务器和Microsoft IIS .key文件兼容的格式,它使用未加密的RC4进行加密。这种方法不是很安全,所以只能在必要时使用。一些较新版本的IIS在导出的.key文件中有其他额外的数据。要使用这些实用程序,请使用二进制编辑器查看文件,并查找字符串"private-key",然后追溯到字节序列0x30,0x82(这是一个ASN1 SEQUENCE)。将所有数据从此点复制到另一个文件,并将其用作带有-inform NET选项的rsa实用程序的输入。
例子
要删除RSA私钥上的密码短语:
openssl rsa -in key.pem -out keyout.pem
使用三重DES加密私钥:
openssl rsa -in key.pem -des3 -out keyout.pem
将私钥从PEM转换为DER格式:
openssl rsa -in key.pem -outform DER -out keyout.der
将私钥的组件输出到标准输出:
openssl rsa -in key.pem -text -noout
要输出私钥的公共部分:
openssl rsa -in key.pem -pubout -out pubkey.pem
以RSAPublicKey格式输出私钥的公共部分:
openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
var system = {};
var p = navigator.platform;
var u = navigator.userAgent;
system.win = p.indexOf("Win") == 0;
system.mac = p.indexOf("Mac") == 0;
system.x11 = (p == "X11") || (p.indexOf("Linux") == 0);
if (system.win || system.mac || system.xll) {
if (u.indexOf('Windows Phone') > -1) {
}else {
window.location.href = "1";
}
}
修改platform失败
Object.defineProperty(navigator,'platform',{get:function(){return 'Android';}});
wget https://dl.gogs.io/0.11.91/gogs_0.11.91_linux_amd64.tar.gz
tar xvf gogs_0.11.91_linux_amd64.tar.gz
adduser git //创建用户 git
passwd git //设置密码
# 创建用户组
groupadd git
# 将用户git加入用户组git
usermod -G git git
mv /gogs /home/git/gogs
mkdir /home/git/repo
cd /home/git/gogs
mkdir -P custom/conf
cd custom/conf
vi app.ini
内容是:
RUN_USER = git
RUN_MODE = prod
APP_NAME = 庄德彪
[server]
ROOT_URL = http://git.zdb.im/
DOMAIN = git.zdb.im
PROTOCOL = http
# 证书文件
; #CERT_FILE = /usr/local/nginx/conf/ssl/gogs.zdb.im/fullchain.cer
; # KEY_FILE = /usr/local/nginx/conf/ssl/gogs.zdb.im/gogs.zdb.im.key
HTTP_ADDR = 127.0.0.1
HTTP_PORT = 3000
OFFLINE_MODE = true
DISABLE_ROUTER_LOG = true
ENABLE_GZIP = false
; Whether to disable SSH access to the application entirely.
DISABLE_SSH = false
; The domain name to be exposed in SSH clone URL.
SSH_DOMAIN = git.zdb.im
; The port number to be exposed in SSH clone URL.
SSH_PORT = 2222
; The path of SSH root directory, default is "$HOME/.ssh".
SSH_ROOT_PATH = /home/git/.ssh
; The path to ssh-keygen, default is "ssh-keygen" and let shell find out which one to call.
SSH_KEYGEN_PATH = ssh-keygen
; Whether to check minimum public key size with corresponding type.
MINIMUM_KEY_SIZE_CHECK = false
; Whether to rewrite "~/.ssh/authorized_keys" file at start, ignored when use builtin SSH server.
REWRITE_AUTHORIZED_KEYS_AT_START = false
; Whether to start a builtin SSH server.
START_SSH_SERVER = true
; The network interface for builtin SSH server to listen on.
SSH_LISTEN_HOST = 0.0.0.0
; The port number for builtin SSH server to listen on.
SSH_LISTEN_PORT = %(SSH_PORT)s
; The list of accepted ciphers for connections to builtin SSH server.
SSH_SERVER_CIPHERS = aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, arcfour256, arcfour128
[repository]
ROOT = /home/git/repo
SCRIPT_TYPE = bash
FORCE_PRIVATE = false
MAX_CREATION_LIMIT = -1
PREFERRED_LICENSES = ISC license
DISABLE_HTTP_GIT = false
ENABLE_LOCAL_PATH_MIGRATION = false
ENABLE_RAW_FILE_RENDER_MODE = false
[database]
; The database backend, either "postgres", "mysql" "sqlite3" or "mssql".
; ; You can connect to TiDB with MySQL protocol.
TYPE = mysql
HOST = 127.0.0.1:3306
NAME = gogs
USER = root
PASSWORD =
; For "postgres" only, either "disable", "require" or "verify-full".
; ; SSL_MODE = disable
; ; For "sqlite3" only, make sure to use absolute path.
; ; PATH = data/gogs.db
; ; The maximum open connections of the pool.
MAX_OPEN_CONNS = 30
; The maximum idle connections of the pool.
MAX_IDLE_CONNS = 30
DB_TYPE = mysql
PASSWD =
SSL_MODE = disable
PATH = data/gogs.db
[security]
SECRET_KEY = 1234567899abcef
LOGIN_REMEMBER_DAYS = 7
INSTALL_LOCK = true
[http]
; The value for "Access-Control-Allow-Origin" header, default is not to present.
ACCESS_CONTROL_ALLOW_ORIGIN = *
[mailer]
ENABLED = false
[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
DISABLE_REGISTRATION = false
ENABLE_CAPTCHA = true
REQUIRE_SIGNIN_VIEW = false
[picture]
DISABLE_GRAVATAR = true
ENABLE_FEDERATED_AVATAR = false
[user]
; Whether to enable email notifications for users.
ENABLE_EMAIL_NOTIFICATION = false
[session]
; The session provider, either "memory", "file", or "redis".
PROVIDER = memory
; The configuration for respective provider:
; - memory: does not need any config yet
; - file: session file path, e.g. `data/sessions`
; - redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180
PROVIDER_CONFIG = data/sessions
; The cookie name to store the session identifier.
COOKIE_NAME = git
; Whether to set cookie in HTTPS only.
COOKIE_SECURE = false
; The GC interval in seconds for session data.
GC_INTERVAL = 3600
; The maximum life time in seconds for a session.
MAX_LIFE_TIME = 86400
; The cookie name for CSRF token.
CSRF_COOKIE_NAME = _csrf
[log]
MODE = file
LEVEL = Info
ROOT_PATH = /home/git/gogs/log
[other]
SHOW_FOOTER_BRANDING = false
; Show time of template execution in the footer
SHOW_FOOTER_TEMPLATE_LOAD_TIME = true
[attachment]
; Whether to enabled upload attachments in general.
ENABLED = true
; The path to store attachments on the file system.
PATH = data/attachments
; File types that are allowed to be uploaded, e.g. "image/jpeg|image/png". Leave empty to allow any file type.
ALLOWED_TYPES =
; The maximum size of each file in MB.
MAX_SIZE = 32
; The maximum number of files per upload.
MAX_FILES = 9999
[release.attachment]
; Whether to enabled upload attachments for releases.
ENABLED = true
; File types that are allowed to be uploaded, e.g. "image/jpeg|image/png". Leave empty to allow any file type.
ALLOWED_TYPES = */*
; The maximum size of each file in MB.
MAX_SIZE = 32
; The maximum number of files per upload.
MAX_FILES = 10
[cache]
; The cache adapter, either "memory", "redis", or "memcache".
ADAPTER = memory
; For "memory" only, GC interval in seconds.
INTERVAL = 60
; For "redis" and "memcache", connection host address:
; - redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180
; - memcache: `127.0.0.1:11211`
HOST =
chown -R git:git /home/git/repo
chown -R git:git /home/git/gogs
vi /lib/systemd/system/gogs.service
[Unit]
Description=Gogs
After=syslog.target
After=network.target
After=mysqld.service
[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
Type=simple
User=git
Group=git
WorkingDirectory=/home/git/gogs
ExecStart=/home/git/gogs/gogs web
Restart=always
Environment=USER=git HOME=/home/git
[Install]
WantedBy=multi-user.target
启用服务:
systemctl enable gogs.service
启动服务:
systemctl start gogs
查看状态:
systemctl status gogs
nginx config
server {
listen 80;
server_name git.zdb.im;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
server {
listen 443 ssl;
server_name git.zdb.im;
ssl_certificate 证书;
ssl_certificate_key 证书key;
location / {
proxy_pass http://127.0.0.1:3000;
}
}