使用-tiup-cluster-在单机上模拟生产环境部署失败

按照官方文档进行部署时,执行到此步时报错:

tiup cluster deploy tidb-cluster v4.0.0 ./topo.yaml --user root

异常信息:

+ Download TiDB components
  - Download pd:v4.0.0 (linux/amd64) ... Done
  - Download tikv:v4.0.0 (linux/amd64) ... Done
  - Download tidb:v4.0.0 (linux/amd64) ... Done
  - Download tiflash:v4.0.0 (linux/amd64) ... ⠙ Download: component=tiflash, version=v4.0.0, os=linux, arch=amd64
  - Download prometheus:v4.0.0 (linux/amd64) ... Done
  - Download grafana:v4.0.0 (linux/amd64) ... Done
  - Download node_exporter:v0.17.0 (linux/amd64) ... Done
  - Download blackbox_exporter:v0.12.0 (linux/amd64) ... Done
fatal error: runtime: out of memory

runtime stack:
runtime.throw(0x1426f29, 0x16)
	/usr/local/go/src/runtime/panic.go:774 +0x72
runtime.sysMap(0xc07c000000, 0x24000000, 0x2003758)
	/usr/local/go/src/runtime/mem_linux.go:169 +0xc5
runtime.(*mheap).sysAlloc(0x1feab20, 0x2085e000, 0x0, 0x0)
	/usr/local/go/src/runtime/malloc.go:701 +0x1cd
runtime.(*mheap).grow(0x1feab20, 0x1042f, 0xffffffff)
	/usr/local/go/src/runtime/mheap.go:1252 +0x42
runtime.(*mheap).allocSpanLocked(0x1feab20, 0x1042f, 0x2003768, 0xc00036fea8)
	/usr/local/go/src/runtime/mheap.go:1163 +0x291
runtime.(*mheap).alloc_m(0x1feab20, 0x1042f, 0x101, 0x0)
	/usr/local/go/src/runtime/mheap.go:1015 +0xc2
runtime.(*mheap).alloc.func1()
	/usr/local/go/src/runtime/mheap.go:1086 +0x4c
runtime.(*mheap).alloc(0x1feab20, 0x1042f, 0xc000010101, 0xc00002f680)
	/usr/local/go/src/runtime/mheap.go:1085 +0x8a
runtime.largeAlloc(0x2085e000, 0x7f425b8c0101, 0x1)
	/usr/local/go/src/runtime/malloc.go:1138 +0x97
runtime.mallocgc.func1()
	/usr/local/go/src/runtime/malloc.go:1033 +0x46
runtime.systemstack(0xc00038fcc0)
	/usr/local/go/src/runtime/asm_amd64.s:370 +0x66
runtime.mstart()
	/usr/local/go/src/runtime/proc.go:1146

goroutine 383 [running]:
runtime.systemstack_switch()
	/usr/local/go/src/runtime/asm_amd64.s:330 fp=0xc000642cc0 sp=0xc000642cb8 pc=0x45cdd0
runtime.mallocgc(0x2085e000, 0x11d9ea0, 0xc000642d01, 0xc000642e68)
	/usr/local/go/src/runtime/malloc.go:1032 +0x895 fp=0xc000642d60 sp=0xc000642cc0 pc=0x40c735
runtime.makeslice(0x11d9ea0, 0x2085e000, 0x2085e000, 0x6000)
	/usr/local/go/src/runtime/slice.go:49 +0x6c fp=0xc000642d90 sp=0xc000642d60 pc=0x4458bc
bytes.makeSlice(0x2085e000, 0x0, 0x0, 0x0)
	/usr/local/go/src/bytes/buffer.go:229 +0x77 fp=0xc000642df8 sp=0xc000642d90 pc=0x4795e7
bytes.(*Buffer).grow(0xc0003a54a8, 0x6000, 0xc0007eb4e8)
	/usr/local/go/src/bytes/buffer.go:142 +0x15b fp=0xc000642e48 sp=0xc000642df8 pc=0x478f2b
bytes.(*Buffer).Write(0xc0003a54a8, 0xc0005e0000, 0x6000, 0x8000, 0x6000, 0x0, 0x0)
	/usr/local/go/src/bytes/buffer.go:172 +0xdd fp=0xc000642e78 sp=0xc000642e48 pc=0x47922d
github.com/cavaliercoder/grab.(*transfer).copy(0xc000292070, 0x1042a000, 0x0, 0x0)
	/go/pkg/mod/github.com/cavaliercoder/grab@v2.0.1-0.20200331080741-9f014744ee41+incompatible/transfer.go:56 +0x26d fp=0xc000642f28 sp=0xc000642e78 pc=0xb36d4d
github.com/cavaliercoder/grab.(*Client).copyFile(0xc0006499b0, 0xc0003a5400, 0xc0000b0000)
	/go/pkg/mod/github.com/cavaliercoder/grab@v2.0.1-0.20200331080741-9f014744ee41+incompatible/client.go:485 +0x68 fp=0xc000642f78 sp=0xc000642f28 pc=0xb34da8
github.com/cavaliercoder/grab.(*Client).copyFile-fm(0xc0003a5400, 0xc0004519e0)
	/go/pkg/mod/github.com/cavaliercoder/grab@v2.0.1-0.20200331080741-9f014744ee41+incompatible/client.go:468 +0x34 fp=0xc000642fa0 sp=0xc000642f78 pc=0xb37b24
github.com/cavaliercoder/grab.(*Client).run(0xc0006499b0, 0xc0003a5400, 0xc0004782c0)
	/go/pkg/mod/github.com/cavaliercoder/grab@v2.0.1-0.20200331080741-9f014744ee41+incompatible/client.go:182 +0x6c fp=0xc000642fc8 sp=0xc000642fa0 pc=0xb32d4c
runtime.goexit()
	/usr/local/go/src/runtime/asm_amd64.s:1357 +0x1 fp=0xc000642fd0 sp=0xc000642fc8 pc=0x45ed21
created by github.com/cavaliercoder/grab.(*Client).Do
	/go/pkg/mod/github.com/cavaliercoder/grab@v2.0.1-0.20200331080741-9f014744ee41+incompatible/client.go:95 +0x211

goroutine 1 [semacquire, 4 minutes]:
sync.runtime_Semacquire(0xc00043b148)
	/usr/local/go/src/runtime/sema.go:56 +0x42
sync.(*WaitGroup).Wait(0xc00043b140)
	/usr/local/go/src/sync/waitgroup.go:130 +0x64
github.com/pingcap/tiup/pkg/cluster/task.(*Parallel).Execute(0xc00045c700, 0xc0003ed030, 0x0, 0xc0003e66c0)
	/home/jenkins/agent/workspace/tiup-release/pkg/cluster/task/task.go:247 +0x16b
github.com/pingcap/tiup/pkg/cluster/task.(*ParallelStepDisplay).Execute(0xc00045c6e0, 0xc0003ed030, 0xc00045c6e0, 0x0)
	/home/jenkins/agent/workspace/tiup-release/pkg/cluster/task/step.go:162 +0x4e
github.com/pingcap/tiup/pkg/cluster/task.(*Serial).Execute(0xc00045cb40, 0xc0003ed030, 0x4, 0x4)
	/home/jenkins/agent/workspace/tiup-release/pkg/cluster/task/task.go:183 +0xc1
github.com/pingcap/tiup/components/cluster/command.deploy(0x7ffc9424754a, 0xc, 0x7ffc94247557, 0x6, 0x7ffc9424755e, 0xb, 0x7ffc94247571, 0x4, 0xc0002efd60, 0x11, ...)
	/home/jenkins/agent/workspace/tiup-release/components/cluster/command/deploy.go:326 +0x1939
github.com/pingcap/tiup/components/cluster/command.newDeploy.func1(0xc00034f080, 0xc00034acd0, 0x3, 0x5, 0x0, 0x0)
	/home/jenkins/agent/workspace/tiup-release/components/cluster/command/deploy.go:95 +0x156
github.com/spf13/cobra.(*Command).execute(0xc00034f080, 0xc00034ac80, 0x5, 0x5, 0xc00034f080, 0xc00034ac80)
	/go/pkg/mod/github.com/spf13/cobra@v1.0.0/command.go:842 +0x460
github.com/spf13/cobra.(*Command).ExecuteC(0xc00034eb00, 0x101e458, 0x1fe2760, 0x24)
	/go/pkg/mod/github.com/spf13/cobra@v1.0.0/command.go:950 +0x349
github.com/spf13/cobra.(*Command).Execute(...)
	/go/pkg/mod/github.com/spf13/cobra@v1.0.0/command.go:887
github.com/pingcap/tiup/components/cluster/command.Execute()
	/home/jenkins/agent/workspace/tiup-release/components/cluster/command/root.go:212 +0x46e
main.main()
	/home/jenkins/agent/workspace/tiup-release/components/cluster/main.go:19 +0x20

goroutine 6 [syscall, 4 minutes]:
os/signal.signal_recv(0x0)
	/usr/local/go/src/runtime/sigqueue.go:147 +0x9c
os/signal.loop()
	/usr/local/go/src/os/signal/signal_unix.go:23 +0x22
created by os/signal.init.0
	/usr/local/go/src/os/signal/signal_unix.go:29 +0x41

goroutine 56 [chan receive]:
go.etcd.io/etcd/pkg/logutil.(*MergeLogger).outputLoop(0xc0002d9e00)
	/go/pkg/mod/go.etcd.io/etcd@v0.5.0-alpha.5.0.20191023171146-3cf2f69b5738/pkg/logutil/merge_logger.go:173 +0x3a3
created by go.etcd.io/etcd/pkg/logutil.NewMergeLogger
	/go/pkg/mod/go.etcd.io/etcd@v0.5.0-alpha.5.0.20191023171146-3cf2f69b5738/pkg/logutil/merge_logger.go:91 +0x80

goroutine 110 [chan receive]:
go.etcd.io/etcd/pkg/logutil.(*MergeLogger).outputLoop(0xc0003124c0)
	/go/pkg/mod/go.etcd.io/etcd@v0.5.0-alpha.5.0.20191023171146-3cf2f69b5738/pkg/logutil/merge_logger.go:173 +0x3a3
created by go.etcd.io/etcd/pkg/logutil.NewMergeLogger
	/go/pkg/mod/go.etcd.io/etcd@v0.5.0-alpha.5.0.20191023171146-3cf2f69b5738/pkg/logutil/merge_logger.go:91 +0x80

goroutine 113 [chan receive]:
go.etcd.io/etcd/pkg/logutil.(*MergeLogger).outputLoop(0xc000312660)
	/go/pkg/mod/go.etcd.io/etcd@v0.5.0-alpha.5.0.20191023171146-3cf2f69b5738/pkg/logutil/merge_logger.go:173 +0x3a3
created by go.etcd.io/etcd/pkg/logutil.NewMergeLogger
	/go/pkg/mod/go.etcd.io/etcd@v0.5.0-alpha.5.0.20191023171146-3cf2f69b5738/pkg/logutil/merge_logger.go:91 +0x80

goroutine 163 [chan receive, 4 minutes]:
github.com/pingcap/tiup/pkg/cliutil/progress.init.1.func1(0xc000364120)
	/home/jenkins/agent/workspace/tiup-release/pkg/cliutil/progress/terminal.go:66 +0x44
created by github.com/pingcap/tiup/pkg/cliutil/progress.init.1
	/home/jenkins/agent/workspace/tiup-release/pkg/cliutil/progress/terminal.go:64 +0xb0

goroutine 165 [select]:
github.com/pingcap/tiup/pkg/cliutil/progress.(*renderer).renderLoopFn(0xc00045c4a0)
	/home/jenkins/agent/workspace/tiup-release/pkg/cliutil/progress/renderer.go:68 +0x109
created by github.com/pingcap/tiup/pkg/cliutil/progress.(*renderer).startRenderLoop
	/home/jenkins/agent/workspace/tiup-release/pkg/cliutil/progress/renderer.go:47 +0xc4

goroutine 169 [select]:
github.com/pingcap/tiup/pkg/repository.(*httpMirror).download(0xc00044de00, 0xc000421db0, 0x42, 0x0, 0x0, 0x1a8dd7aa, 0x0, 0x0, 0x0, 0x0)
	/home/jenkins/agent/workspace/tiup-release/pkg/repository/mirror.go:198 +0x321
github.com/pingcap/tiup/pkg/repository.(*httpMirror).Fetch(0xc00044de00, 0xc00010d620, 0x22, 0x1a8dd7aa, 0xc000649650, 0xc000293a40, 0x0, 0x1180c88)
	/home/jenkins/agent/workspace/tiup-release/pkg/repository/mirror.go:256 +0x77
github.com/pingcap/tiup/pkg/repository.(*V1Repository).FetchComponent(0xc0004c1540, 0xc0000769c0, 0x0, 0x0, 0x0, 0x0)
	/home/jenkins/agent/workspace/tiup-release/pkg/repository/v1_repository.go:439 +0x7e
github.com/pingcap/tiup/pkg/cluster/clusterutil.(*repositoryT).DownloadComponent(0xc00049e510, 0x1414e80, 0x7, 0x7ffc94247557, 0x6, 0xc000265770, 0x46, 0x0, 0x0)
	/home/jenkins/agent/workspace/tiup-release/pkg/cluster/clusterutil/cluster.go:60 +0xb3
github.com/pingcap/tiup/pkg/cluster/operation.Download(0x1414e80, 0x7, 0x11780c4, 0x5, 0x1180c88, 0x5, 0x7ffc94247557, 0x6, 0x0, 0x0)
	/home/jenkins/agent/workspace/tiup-release/pkg/cluster/operation/download.go:59 +0x5d2
github.com/pingcap/tiup/pkg/cluster/task.(*Downloader).Execute(0xc00038fd80, 0xc0003ed030, 0xc00038fd80, 0xd)
	/home/jenkins/agent/workspace/tiup-release/pkg/cluster/task/download.go:43 +0x6d
github.com/pingcap/tiup/pkg/cluster/task.(*Serial).Execute(0xc0004499a0, 0xc0003ed030, 0xd, 0x1204b80)
	/home/jenkins/agent/workspace/tiup-release/pkg/cluster/task/task.go:183 +0xc1
github.com/pingcap/tiup/pkg/cluster/task.(*StepDisplay).Execute(0xc00038fdc0, 0xc0003ed030, 0xc00038fdc0, 0x0)
	/home/jenkins/agent/workspace/tiup-release/pkg/cluster/task/step.go:85 +0x1c6
github.com/pingcap/tiup/pkg/cluster/task.(*Parallel).Execute.func1(0xc00043b140, 0xc00045c700, 0xc0003ed030, 0xc00043b128, 0xc000454da0, 0x165fbc0, 0xc00038fdc0)
	/home/jenkins/agent/workspace/tiup-release/pkg/cluster/task/task.go:236 +0xcb
created by github.com/pingcap/tiup/pkg/cluster/task.(*Parallel).Execute
	/home/jenkins/agent/workspace/tiup-release/pkg/cluster/task/task.go:228 +0x147

goroutine 386 [select]:
github.com/cavaliercoder/grab/bps.Watch(0x1668400, 0xc000080740, 0x1646200, 0xc0001a00a0, 0xc0004783a0, 0x3b9aca00)
	/go/pkg/mod/github.com/cavaliercoder/grab@v2.0.1-0.20200331080741-9f014744ee41+incompatible/bps/bps.go:47 +0x236
created by github.com/cavaliercoder/grab.(*transfer).copy
	/go/pkg/mod/github.com/cavaliercoder/grab@v2.0.1-0.20200331080741-9f014744ee41+incompatible/transfer.go:40 +0x12a

goroutine 364 [runnable]:
internal/poll.runtime_pollWait(0x7f425b8c5d30, 0x72, 0xffffffffffffffff)
	/usr/local/go/src/runtime/netpoll.go:184 +0x55
internal/poll.(*pollDesc).wait(0xc000807d98, 0x72, 0x11200, 0x112b6, 0xffffffffffffffff)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc000807d80, 0xc0006a0501, 0x112b6, 0x112b6, 0x0, 0x0, 0x0)
	/usr/local/go/src/internal/poll/fd_unix.go:169 +0x1cf
net.(*netFD).Read(0xc000807d80, 0xc0006a0501, 0x112b6, 0x112b6, 0x203000, 0x16f5, 0xc000a06f80)
	/usr/local/go/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc00049eb68, 0xc0006a0501, 0x112b6, 0x112b6, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/net.go:184 +0x68
crypto/tls.(*atLeastReader).Read(0xc0012f4420, 0xc0006a0501, 0x112b6, 0x112b6, 0xc0006a0000, 0xc0006b00f6, 0xc00054e970)
	/usr/local/go/src/crypto/tls/conn.go:780 +0x60
bytes.(*Buffer).ReadFrom(0xc000a07058, 0x1632ca0, 0xc0012f4420, 0x40a195, 0x1269900, 0x13bfa80)
	/usr/local/go/src/bytes/buffer.go:204 +0xb4
crypto/tls.(*Conn).readFromUntil(0xc000a06e00, 0x16349e0, 0xc00049eb68, 0x401d, 0xc00049eb68, 0x0)
	/usr/local/go/src/crypto/tls/conn.go:802 +0xec
crypto/tls.(*Conn).readRecordOrCCS(0xc000a06e00, 0x0, 0x0, 0x42e8e1)
	/usr/local/go/src/crypto/tls/conn.go:654 +0x584
crypto/tls.(*Conn).readRecord(...)
	/usr/local/go/src/crypto/tls/conn.go:577
crypto/tls.(*Conn).Read(0xc000a06e00, 0xc0003b8000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/local/go/src/crypto/tls/conn.go:1255 +0x161
bufio.(*Reader).Read(0xc000894fc0, 0xc000406498, 0x9, 0x9, 0x2000, 0x2000, 0x0)
	/usr/local/go/src/bufio/bufio.go:226 +0x26a
io.ReadAtLeast(0x1632ae0, 0xc000894fc0, 0xc000406498, 0x9, 0x9, 0x9, 0x0, 0x0, 0xc00054ef78)
	/usr/local/go/src/io/io.go:310 +0x87
io.ReadFull(...)
	/usr/local/go/src/io/io.go:329
net/http.http2readFrameHeader(0xc000406498, 0x9, 0x9, 0x1632ae0, 0xc000894fc0, 0x0, 0x0, 0xc0012ef1a0, 0x0)
	/usr/local/go/src/net/http/h2_bundle.go:1477 +0x87
net/http.(*http2Framer).ReadFrame(0xc000406460, 0xc0012ef1a0, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/http/h2_bundle.go:1735 +0xa1
net/http.(*http2clientConnReadLoop).run(0xc00054efb8, 0x740cdd, 0xc000076a80)
	/usr/local/go/src/net/http/h2_bundle.go:8175 +0x8e
net/http.(*http2ClientConn).readLoop(0xc0007f1e00)
	/usr/local/go/src/net/http/h2_bundle.go:8103 +0xa3
created by net/http.(*http2Transport).newClientConn
	/usr/local/go/src/net/http/h2_bundle.go:7162 +0x62f

goroutine 384 [select]:
github.com/cheggaaa/pb.(*ProgressBar).writer(0xc000386000, 0xc0004501e0)
	/go/pkg/mod/github.com/cheggaaa/pb@v2.0.7+incompatible/pb.go:168 +0xc2
created by github.com/cheggaaa/pb.(*ProgressBar).Start
	/go/pkg/mod/github.com/cheggaaa/pb@v2.0.7+incompatible/pb.go:162 +0x1ee

goroutine 370 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7f425b8c5920, 0x72, 0xffffffffffffffff)
	/usr/local/go/src/runtime/netpoll.go:184 +0x55
internal/poll.(*pollDesc).wait(0xc00034d818, 0x72, 0xdb00, 0xdbf9, 0xffffffffffffffff)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc00034d800, 0xc0007ae000, 0xdbf9, 0xdbf9, 0x0, 0x0, 0x0)
	/usr/local/go/src/internal/poll/fd_unix.go:169 +0x1cf
net.(*netFD).Read(0xc00034d800, 0xc0007ae000, 0xdbf9, 0xdbf9, 0x203000, 0x0, 0x9f55)
	/usr/local/go/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc00049eb58, 0xc0007ae000, 0xdbf9, 0xdbf9, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/net.go:184 +0x68
crypto/tls.(*atLeastReader).Read(0xc0004aad40, 0xc0007ae000, 0xdbf9, 0xdbf9, 0xd, 0xc0007ae00d, 0xc000549970)
	/usr/local/go/src/crypto/tls/conn.go:780 +0x60
bytes.(*Buffer).ReadFrom(0xc000a06958, 0x1632ca0, 0xc0004aad40, 0x40a195, 0x1269900, 0x13bfa80)
	/usr/local/go/src/bytes/buffer.go:204 +0xb4
crypto/tls.(*Conn).readFromUntil(0xc000a06700, 0x16349e0, 0xc00049eb58, 0x5, 0xc00049eb58, 0x9)
	/usr/local/go/src/crypto/tls/conn.go:802 +0xec
crypto/tls.(*Conn).readRecordOrCCS(0xc000a06700, 0x0, 0x0, 0x0)
	/usr/local/go/src/crypto/tls/conn.go:609 +0x124
crypto/tls.(*Conn).readRecord(...)
	/usr/local/go/src/crypto/tls/conn.go:577
crypto/tls.(*Conn).Read(0xc000a06700, 0xc0003f8000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/local/go/src/crypto/tls/conn.go:1255 +0x161
bufio.(*Reader).Read(0xc000895440, 0xc00043c2d8, 0x9, 0x9, 0xc000549d10, 0x0, 0x766d92)
	/usr/local/go/src/bufio/bufio.go:226 +0x26a
io.ReadAtLeast(0x1632ae0, 0xc000895440, 0xc00043c2d8, 0x9, 0x9, 0x9, 0xc000074040, 0x0, 0x1632ee0)
	/usr/local/go/src/io/io.go:310 +0x87
io.ReadFull(...)
	/usr/local/go/src/io/io.go:329
net/http.http2readFrameHeader(0xc00043c2d8, 0x9, 0x9, 0x1632ae0, 0xc000895440, 0x0, 0x0, 0xc0006b2f90, 0x0)
	/usr/local/go/src/net/http/h2_bundle.go:1477 +0x87
net/http.(*http2Framer).ReadFrame(0xc00043c2a0, 0xc0006b2f90, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/http/h2_bundle.go:1735 +0xa1
net/http.(*http2clientConnReadLoop).run(0xc000549fb8, 0x740cdd, 0xc000365a40)
	/usr/local/go/src/net/http/h2_bundle.go:8175 +0x8e
net/http.(*http2ClientConn).readLoop(0xc0003e0180)
	/usr/local/go/src/net/http/h2_bundle.go:8103 +0xa3
created by net/http.(*http2Transport).newClientConn
	/usr/local/go/src/net/http/h2_bundle.go:7162 +0x62f
Error: run `/root/.tiup/components/cluster/v1.0.2/tiup-cluster` (wd:/root/.tiup/data/S11ntWZ) failed: exit status 2

请问中控机的配置是怎么样的?看日志报错是 out of memory 了

Download blackbox_exporter:v0.12.0 (linux/amd64) … Done fatal error: runtime: out of memory

使用的虚拟机,配置如下:

我看内存是够的

虚拟机内存由1G调整为2G后,再重试,截图如下:

内存占用确实很高

先前内存溢出的错暂时没有了,但出现了新的报错

中控机跟TiDB集群部署服务器是同一台服务器导致的。。。需要分开才行!

再弄个新的虚拟机用于TiDB集群,问题解决

注意:需要设置中控机跟TiDB集群部署服务器之前的SSH无密码登陆

比如服务器A与服务器B之间ssh需要无密码登陆,可按照以下步骤进行配置:

  • 在服务器A和B上生成各自的SSH密钥和公钥
# 一路Enter即可
# 生成的密钥和公钥保存在~/.ssh目录下
ssh-keygen -t rsa
  • 将各自SSH公钥上传至对方服务器上
# 在服务器A上执行
ssh-copy-id root@B服务器IP
# 在服务器B上执行
ssh-copy-id root@A服务器IP

感谢分享:+1:

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。