diff --git a/cmd/neofs-cli/internal/client/sdk.go b/cmd/neofs-cli/internal/client/sdk.go
new file mode 100644
index 000000000..ab254a7d4
--- /dev/null
+++ b/cmd/neofs-cli/internal/client/sdk.go
@@ -0,0 +1,35 @@
+package internal
+
+import (
+	"crypto/ecdsa"
+	"crypto/tls"
+	"fmt"
+
+	"github.com/nspcc-dev/neofs-node/pkg/network"
+	"github.com/nspcc-dev/neofs-sdk-go/client"
+)
+
+// GetSDKClient returns default neofs-sdk-go client.
+func GetSDKClient(key *ecdsa.PrivateKey, addr network.Address) (*client.Client, error) {
+	var (
+		c       client.Client
+		prmInit client.PrmInit
+		prmDial client.PrmDial
+	)
+
+	prmInit.SetDefaultPrivateKey(*key)
+	prmInit.ResolveNeoFSFailures()
+	prmDial.SetServerURI(addr.HostAddr())
+
+	if addr.TLSEnabled() {
+		prmDial.SetTLSConfig(&tls.Config{})
+	}
+
+	c.Init(prmInit)
+
+	if err := c.Dial(prmDial); err != nil {
+		return nil, fmt.Errorf("can't init SDK client: %w", err)
+	}
+
+	return &c, nil
+}
diff --git a/cmd/neofs-cli/modules/bearer/create.go b/cmd/neofs-cli/modules/bearer/create.go
index 472da3170..4f9f8a69a 100644
--- a/cmd/neofs-cli/modules/bearer/create.go
+++ b/cmd/neofs-cli/modules/bearer/create.go
@@ -5,13 +5,13 @@ import (
 	"crypto/ecdsa"
 	"crypto/elliptic"
 	"crypto/rand"
-	"crypto/tls"
 	"encoding/json"
 	"fmt"
 	"io/ioutil"
 	"strconv"
 	"time"
 
+	internalclient "github.com/nspcc-dev/neofs-node/cmd/neofs-cli/internal/client"
 	"github.com/nspcc-dev/neofs-node/pkg/network"
 	"github.com/nspcc-dev/neofs-sdk-go/client"
 	eaclSDK "github.com/nspcc-dev/neofs-sdk-go/eacl"
@@ -160,12 +160,7 @@ func parseEpoch(cmd *cobra.Command, flag string) (uint64, bool, error) {
 
 // getCurrentEpoch returns current epoch.
 func getCurrentEpoch(endpoint string) (uint64, error) {
-	var (
-		c       client.Client
-		prmInit client.PrmInit
-		prmDial client.PrmDial
-		addr    network.Address
-	)
+	var addr network.Address
 
 	if err := addr.FromString(endpoint); err != nil {
 		return 0, fmt.Errorf("can't parse RPC endpoint: %w", err)
@@ -176,17 +171,9 @@ func getCurrentEpoch(endpoint string) (uint64, error) {
 		return 0, fmt.Errorf("can't generate key to sign query: %w", err)
 	}
 
-	prmInit.SetDefaultPrivateKey(*key)
-	prmInit.ResolveNeoFSFailures()
-	c.Init(prmInit)
-
-	prmDial.SetServerURI(addr.HostAddr())
-	if addr.TLSEnabled() {
-		prmDial.SetTLSConfig(&tls.Config{})
-	}
-
-	if err := c.Dial(prmDial); err != nil {
-		return 0, fmt.Errorf("can't initialize client: %w", err)
+	c, err := internalclient.GetSDKClient(key, addr)
+	if err != nil {
+		return 0, err
 	}
 
 	ctx, cancel := context.WithTimeout(context.Background(), time.Second*30)
diff --git a/cmd/neofs-cli/modules/root.go b/cmd/neofs-cli/modules/root.go
index e1307a845..e87b3dfdc 100644
--- a/cmd/neofs-cli/modules/root.go
+++ b/cmd/neofs-cli/modules/root.go
@@ -2,7 +2,6 @@ package cmd
 
 import (
 	"crypto/ecdsa"
-	"crypto/tls"
 	"errors"
 	"fmt"
 	"os"
@@ -15,6 +14,7 @@ import (
 	"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
 	"github.com/nspcc-dev/neo-go/pkg/util"
 	"github.com/nspcc-dev/neo-go/pkg/wallet"
+	internalclient "github.com/nspcc-dev/neofs-node/cmd/neofs-cli/internal/client"
 	"github.com/nspcc-dev/neofs-node/cmd/neofs-cli/modules/acl"
 	bearerCli "github.com/nspcc-dev/neofs-node/cmd/neofs-cli/modules/bearer"
 	"github.com/nspcc-dev/neofs-node/misc"
@@ -341,32 +341,11 @@ func prepareBearerPrm(cmd *cobra.Command, prm bearerPrm) {
 // getSDKClient returns default neofs-api-go sdk client. Consider using
 // opts... to provide TTL or other global configuration flags.
 func getSDKClient(key *ecdsa.PrivateKey) (*client.Client, error) {
-	var (
-		c       client.Client
-		prmInit client.PrmInit
-		prmDial client.PrmDial
-	)
-
 	netAddr, err := getEndpointAddress(rpc)
 	if err != nil {
 		return nil, err
 	}
-
-	prmInit.SetDefaultPrivateKey(*key)
-	prmInit.ResolveNeoFSFailures()
-	prmDial.SetServerURI(netAddr.HostAddr())
-
-	if netAddr.TLSEnabled() {
-		prmDial.SetTLSConfig(&tls.Config{})
-	}
-
-	c.Init(prmInit)
-	err = c.Dial(prmDial)
-	if err != nil {
-		return nil, fmt.Errorf("coult not init api client:%w", err)
-	}
-
-	return &c, err
+	return internalclient.GetSDKClient(key, netAddr)
 }
 
 func getTTL() uint32 {